数组的排序方法
3: 快速排序法(二分法)
是一种比较快的排序方法,但比较难于理解
算法思想:
假设数组为:
通常情况下把第一个数作为基准数这里记作n。
让变量j从右往左找到一个小于基准数n的数值,再用变量i从左往右找到一个大于基准数n的数值,交换俩值。然后继续走,直到i等于j。
然后让下标i所代表的数和基准数交换,就把此数组分成俩部分,在重复同样的步骤,直到只有一个数为止。
代码为:
//这里采用递归
public void sort(int[] array,int left,int right){
//表示只有一个数
if(left >= right){
return;
}
//左边索引的位置
int i = left;
//右边索引的位置
int j = right;
//基准值
int middle = array[left];
//临时变量
//当左边的索引不同于右边的索引先从右边开始
//直到右边的索引所代表的值比基准值大或等于
//左边的继续同样的步骤
while(i != j){
//右边先走
while(array[j] <= middle && j > i){
j--;
}
//左边的再走
while(array[i] >= middle && j > i){
i++;
}
int temp = array[j];
array[j] = array[i];
array[i] = temp;
}
//i==j时所代表的数组的值与基准值进行交换
array[left] = array[i];
array[i] = middle;
sort(array,left,i-1);
sort(array,i+1,right);
}