日期:2014-05-19 浏览次数:20715 次
package itheima;
public class TEST1 {
//该方法是实现快速排序
//方法实现的结果为从小到大排序
// void swap(int a,int b)
// {
// a=a+b;
// b=a-b;
// a=a-b;
// }
int sortMethod(int[] arr,int i,int j){
//arr表示需要排序的数组,i和j分别表示排序的初始位置和结束位置
if(i==j){
//如果i和j已经相等,那说明需要排序的序列中只有一个数字,表示排序结束
return 0;
}
//当i和j不相等的时候,则进行排序,
int temp=arr[i];
//选择第一个数字作为排序的参考数据,然后从j位置开始逐一往前进行比较,当
//arr[j]小于temp的时候,就将arr[j]和arr[i]进行更换
//如果arr[j]大于temp,则将比较位置前移,也就是将j进行减1操作
//当j=i的时候,则停止排序
while(j>i){
//当arr[j]小于temp的时候,将arr[i]和arr[j]交换
while(arr[j]>temp)
j--;
arr[i]=arr[i]+arr[j];
arr[j]=arr[i]-arr[j];
arr[i]=arr[i]-arr[j];
while(arr[i]<temp)
i++;
arr[i]=arr[i]+arr[j];
arr[j]=arr[i]-arr[j];
arr[i]=arr[i]-arr[j];
}
return i;
}
void quicksort(int[] array,int low,int high){
// int high=array.length;
// int low=0;
while(low<high){
//对整个数列进行排序
int mid=sortMethod(array, low, high);
//对从 0到low进行排序
quicksort(array,low,mid-1);
//对low到high进行排序
quicksort(array, mid+1, high);
}
}
public static void main(String[] args){
TEST1 t=new TEST1();
int[] arr={22,33,21,423,11,121,1};
int i=0;
System.out.println("未排序前的序列");
for(;i<arr.length;i++)
System.out.print(arr[i]+",");
System.out.println('\n');
i=0;
t.quicksort(arr, 0, arr.length-1);
System.out.println("排序后的序列");
for(;i<arr.length;i++)
System.out.print(arr[i]+",");
}
}