作者:黎芝君1_530 | 来源:互联网 | 2023-05-19 04:51
是对气泡排序的一种改进,排序速度较快int[]arraynewint[10];生成随机数对象RandomrandomnewRandom();for(inti0;i
是对气泡排序的一种改进,排序速度较快
int[] array = new int[10];
//生成随机数对象
Random random = new Random();
for (int i = 0; i < array.length; i++) {
array[i] = random.nextInt(50);
System.out.print(array[i]+" ");
}
System.out.println("\n排序后:");
quickSort(array,0,array.length-1);
}
private static void quickSort(int[] array, int lowIndex
, int hightIndex) {
//记录最小索引
int low = lowIndex;
//记录最大索引
int hight = hightIndex;
//记录分界点元素
int middle;
if (hightIndex>lowIndex) {
//确定中间分界点元素值
middle = array[(lowIndex+hightIndex)/2];
while(low<=hight){
while ((lowlowIndex)&&(array[hight])>middle) {
//确定大于分界元素值的最大索引
--hight;
}
//如果最大索引与最小索引没有重叠
if (low<=hight) {
//交换两个索引的元素
swap(array,low,hight);
//递增最小索引
++low;
//递减最大索引
--hight;
}
}
//递归排序未分界元素
if (lowIndex//快速排序算法原理:
通过一趟排序将要排序的数据分割成两个独立的两部分,其中一部分的数据都比另一部分的数据要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序可以递归进行,依此使整个数据变成有序序列。
例如:
假设要排序的是A[1]···A[N],首选选取任意一个数据(通常选用第一个元素)作为关键数据,然后将所有比它小的数放到它前面,比它大的放在后面,这个过程称为一趟快速排序,递归调用此过程,即可实现数组的快速排序。
如图所示
本文出自 “IT菜鸟” 博客,请务必保留此出处http://mazongfei.blog.51cto.com/3174958/1907003
使用快速排序对数组排序