{3,9,8,5,2,1,6}
{2,1} {3} {9,8,5,6}
{2,1} => {1} {2} {9,8,5,6} => {8,5,6} {9}=> {5,6} {8} {9}=> {5} {6} {8} {9}
{1} {2} {3} {5} {6} {8} {9}
quickSort(int begin, int end) {
//begin为数组的第一个数据的索引值,end为数组的最后一个数据的索引值+1
//如果只有1个数据或0个数据,则程序返回
if( begin == end || begin == (end-1) ) return;
int p = in[begin];//p为选择的参考数据,选择第一个数据
int a = begin +1; //a作为2部分数据分界线的索引值
int b = a;//b为待比较的数据的索引值
for( ; b < end; b++) {//将数组中的各个数据依次与参考数据进行比较
if( in[b] < p) { //如果该数据<参考数据则将其移动到左边
if(a == b){a++; continue;} //如果该数据已经在左边则不动
int temp = in[a];//将数据移动到左边
in[a] = in[b];
in[b] = temp;
a++;//将分界线右移
}
}
in[begin] = in[a-1];//讲参考值移动到2组数据中间
in[a-1] = p;
if( a-1 > begin){ // 如果左边有数据则将其重复上述步骤
quickSort(begin, a);
}
if( end-1 > a ) {// 如果右边有数据则将其重复上述步骤
quickSort(a, end);
}
return; // 如果无数据返回
}
private static void sort1(int[] a, int lo, int hi) {
if (hi <= lo)
return;
int lt = lo, i = lo + 1, gt = hi;
int v = a[lo];
while (i <= gt) {
if (a[i] < v) {
swap(a, lt++, i++);
} else if (a[i] > v) {
swap(a, i, gt--);
} else {
i++;
}
sort(a, lo, lt - 1);
sort(a, gt + 1, hi);
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有