1、快排:
public class Kuaipai {
public static void quickSort(int[] arr,int left,int right){
if(left>right){
return;
}
int i,j,temp;
temp=arr[left];//选择最左边的数作为基数
i=left;//最左边
j=right;//最右边
//i、j还没有相遇
while(i!=j){
//从右边开始找比基数小的
while(arr[j]>=temp && i<j){
j--;
}
//找左边的
while(arr[i]<=temp && i<j){
i++;
}
if(i<j){
swap(arr,i,j);
}
}
//将基准数归位
arr[left]=arr[i];
arr[i]=temp;
//递归左右两个子序列
quickSort(arr,left,i-1);//继续处理左边的
quickSort(arr,i+1,right);//继续处理右边的
}
//交换两个数字的前后位置
public static void swap(int[]arr,int i,int j){
int w;
w=arr[i];
arr[i]=arr[j];
arr[j]=w;
}
public static void main(String[] args){
int s[]={10,100,1000,10000,100000};
for(int i=0;i<5;i++){
int k=s[i];
int[]arr=new int[k];
for(int j=k-1;j>=0;j--){
arr[j]=j;
}
System.out.print("\n");
System.out.print("最终排序结果为:");
long startTime=System.nanoTime();//获取开始时间
quickSort(arr,0,k-1);//进行快速排序
long endTime=System.nanoTime();//获取结束时间
System.out.print("\n");
System.out.print("程序运行时间:"+(endTime-startTime)/100000.0+"ms");
}
}
}
2、插入:
public class Charu {
//插入排序
public static void charu(int[] arr){
for(int i=1;i<arr.length;i++){
int j=i;
//前面的是已经排好的,将下一个数字放进来,进行对比
while (j>0 && arr[j]<arr[j-1]){
swap(arr,j,j-1);
j--;
}
}
}
//交换两个数字的前后位置
public static void swap(int[]arr,int i,int j){
int w;
w=arr[i];
arr[i]=arr[j];
arr[j]=w;
}
public static void main(String[] args){
int s[]={10,100,1000,10000,100000};
for(int i=0;i<5;i++){
int k=s[i];
int[]arr=new int[k];
for(int j=k-1;j>=0;j--){
arr[j]=j;
}
System.out.print("\n");
System.out.print("最终排序结果为:");
long startTime=System.nanoTime();//获取开始时间
charu(arr);//进行插入排序
long endTime=System.nanoTime();//获取结束时间
System.out.print("\n");
System.out.print("程序运行时间:"+(endTime-startTime)/100000.0+"ms");
}
}
}