JAVA经典算法(41-42)

JAVA经典算法42例

    • 【41.排序算法比较】
    • 【42.数字的条件排列】

【41.排序算法比较】

java排序算法的比较

import java.util.*; 
import java.io.*; 
public class SortAlgorithm 
{ 
static Random rand = new Random(); 
void bubbleSort(int[] numlist) // 冒泡排序算法 
{ 
int temp; 
for(int j=1;j<numlist.length;j++) 
for(int i=0;i<numlist.length-j;i++) 
if(numlist>numlist[i+1]) 
{ 
temp = numlist[i+1]; 
numlist[i+1] = numlist; 
numlist = temp; 
} 
} 
void selectionSort (int[] numlist) //选择排序算法 
{ 
int temp; 
for(int i=0;i<numlist.length-1;i++) 
for(int j=i+1;j<numlist.length;j++) 
if(numlist>numlist[j]) 
{ 
temp = numlist[j]; 
numlist[j] = numlist; 
numlist = temp; 
} 
} 
void insertSort (int[] numlist) //插入排序算法 
{ 
int temp,in,out; 
for(out=1;out<numlist.length;out++) 
{ 
temp=numlist[out]; 
in=out; 
while(in>0 && numlist[in-1]>=temp) 
{ 
numlist[in]=numlist[in-1]; 
--in; 
} 
numlist[in]=temp; 
} 
} 
void display (int[] num) // 打印出排序结果 
{ 
for(int i = 0;i<num.length;i++) 
System.out.print(num+" "); 
System.out.println(""); 
} 
static int pRand(int mod) // 生成随即数组 
{ 
return Math.abs(rand.nextInt())%mod; 
} 
public static void main(String args[])throws IOException 
{ 
SortAlgorithm sortAlgorithm = new SortAlgorithm(); 
int[] numList = new int[10]; 
for(int i = 0;i<numList.length;i++) 
numList = pRand(100); //调用pRand方法,把随即生成的数据输入到 
// 数组中 
System.out.println("随即生成的数组是:"); 
// 打印出原数组, 
for(int j =0;j<numList.length;j++) 
System.out.print(numList[j]+" "); 
System.out.println(""); 
long begin = System.currentTimeMillis(); //排序开始时间,调用系统的当前时间 
sortAlgorithm.bubbleSort(numList); //执行冒泡排序 
long end = System.currentTimeMillis(); //排序结束时间,调用系统当前时间 
System.out.println("冒泡排序用时为:" + (end-begin)); //排序用时 
System.out.println("排序后的数组为:"); 
sortAlgorithm.display(numList); 
begin = System.currentTimeMillis(); 
sortAlgorithm.selectionSort(numList); 
end = System.currentTimeMillis(); 
System.out.println("选择排序用时为:" +(end-begin)); 
System.out.println("排序后的数组为:"); 
sortAlgorithm.display(numList); 
begin = System.currentTimeMillis(); 
sortAlgorithm.insertSort(numList); 
end = System.currentTimeMillis(); 
System.out.println("插入排序用时为:" + (end-begin)); 
System.out.println("排序后的数组为:"); 
sortAlgorithm.display(numList); 
} 
} 

【42.数字的条件排列】

题目如下:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。

static int[] bits = new int[] { 1, 2, 3, 4, 5 }; 
/** 
* @param args 
*/ 
public static void main(String[] args) { 
sort("", bits); 
} 
private static void sort(String prefix, int[] a) { 
if (a.length == 1) { 
System.out.println(prefix + a[0]); 
} 
for (int i = 0; i < a.length; i++) { 
sort(prefix + a, copy(a, i)); 
} 
} 
private static int[] copy(int[] a,int index){ 
int[] b = new int[a.length-1]; 
System.arraycopy(a, 0, b, 0, index); 
System.arraycopy(a, index+1, b, index, a.length-index-1); 
return b; 
} 

你可能感兴趣的:(java基础)