没接触过希尔排序
下面是以前自己写的快速排序
希望能帮到你
- /**
- * 快速排序的接口函数,让调用者只需要传递数组进来即可
- * @param num 要被排序的数组
- */
- private static void quickSort(int[] num){
- if(num.length < 2)
- return;
- quickSort(num, 0, num.length - 1);
- }
-
- /**
- * 快速排序的算法核心 本算法缺点为数据量过大时可能出现栈溢出
- * 且实际效率严重依赖于传递进来的数据
- * @param num 要被排序的数组
- * @param a 本轮排序的范围
- * @param b 本轮排序的范围
- */
- private static void quickSort(int[] num, int a, int b){
- int i, j, x, temp;
- i = a;
- j = b;
- x = num[(i + j) / 2];
- do{
- while(num[i] < x && i < b)
- i++;
- while(num[j] > x && j > a)
- j--;
- if(i <= j){
- temp = num[i];
- num[i] = num[j];
- num[j] = temp;
- i++;
- j--;
- }
- }while(i <= j);
- if(a < j)
- quickSort(num, a, j);
- if(b > i)
- quickSort(num, i, b);
- }
复制代码 |