首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

各种排序算法二

2012-07-01 
各种排序算法2/**? * 快速排序 ? * 思路:选择中间数作为基准,然后i从左向右找到第一个大于等于这个基准的

各种排序算法2

/**
? * 快速排序
? * 思路:选择中间数作为基准,然后i从左向右找到第一个大于等于这个基准的数,j从右向左找到第一个小于等于该基准的数,直到i>=j,交换这两个数。
? * 然后递归对左边i个数和右边n-1-i个数进行相同排序。
? */
?public int[] quickSort(int[] iAry, int left, int right) {
??if (left < right) {
???int midNum = iAry[(left + right) / 2];
???int i = left - 1;
???int j = right + 1;
???while (true) {
????while (iAry[++i] < midNum);
????while (iAry[--j] > midNum);
????if (i >= j) {
?????break;
????}
????swap(iAry, i, j);
???}
???quickSort(iAry, left, i - 1);
???quickSort(iAry, j + 1, right);
??}
??return iAry;
?}

?private int[] createAry() {
??Random rand = new Random();
??int[] ary = new int[5];
??for (int i = 0; i < ary.length; i++) {
???ary[i] = rand.nextInt(100);
??}
??return ary;
?}

?private void printAry(int[] ary) {
??System.out.println(Arrays.toString(ary));
?}

?private void swap(int[] iAry, int num1, int num2) {
??int temp = iAry[num1];
??iAry[num1] = iAry[num2];
??iAry[num2] = temp;
?}

?@Test
?public void sortTest() {
??int[] iAry = createAry();
??System.out.print("原始数组:");
??printAry(iAry);

?? iAry = bubbleSort(iAry);
?? System.out.print("冒泡排序后的数组:");
?? printAry(iAry);
??
?? iAry = selectSort(iAry);
?? System.out.print("选择排序后的数组:");
?? printAry(iAry);
??
?? iAry = insertSort(iAry);
?? System.out.print("插入排序后的数组:");
?? printAry(iAry);

热点排行