五.冒泡排序
思想:冒泡排序就是两个相邻的元素之间进行比较,把最大的冒到最后,一般是比较好理解的
//冒泡排序
public static void bubbleSort(int [] array){
for(int i=0;i<array.length-1;i++){
boolean treated=true;
for(int j=0;j<array.length-i-1;j++){
if(array[j]>array[j+1]){
swap(array,j,j+1);
treated=false;
}
}
if(treated==true){
break;
}
}
}
六.快速排序
其基本思想为:任取待排序元素序列中 的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。
分割的过程:四种方法
1)左右往中间靠
a.hover b.挖坑法
2)前后遍历
a,前后遍历 b.把基准值单独处理
//快速排序
public static void quickSort(int [] array){
quickSortInternal(array,0,array.length-1);
}
public static void quickSortInternal(int [] array,int left,int right){
if(left>=right){
return;
}
//1.确定基准值:array[right]作为基准值
//2.遍历,小的在左,大的在右
//int pivotIndex1=partioion1(array,left,right);
//int pivotIndex2=partioion2(array,left,right);
//int pivotIndex3=partition3(array,left,right);
int [] indices=partition4(array,left,right);
//分出两个小区间
//[left,pivotlndex-1]
//[pivotlndex+1,right]
//quickSortInternal(array,left,pivotIndex1-1);
//quickSortInternal(array,pivotIndex1+1,right);
//quickSortInternal(array,left,pivotIndex2-1);
//quickSortInternal(array,pivotIndex2+1,right);
//quickSortInternal(array,left,pivotIndex3-1);
//quickSortInternal(array,pivotIndex3+1,right);
quickSort