您的位置:首页 > 产品设计 > UI/UE

QuickSort 快排算法 java

2016-03-05 14:23 399 查看
快排算法是一种简单而又快速的算法,由冒泡法改进而来,效率高,而且代码量不大,较有代表性,在面试中经常被问到。

这里的自己看了几个帖子,手写完成了该算法。

可以通过打印,查看算法完成的过程。

引用白话经典算法系列之六 快速排序 快速搞定

package basic;

import java.util.Arrays;

public class QuickSort {

public static void main(String[] args) {
QuickSort quickSort = new QuickSort();
int[] arrays = {2, 5, 3, 4, 6, 1};
quickSort.quickSort(arrays, 0, arrays.length - 1);
}

public int partition(int[] arrays, int left, int right) {
int pivat = arrays[left];
System.out.println("挖第一个数这个坑\t" + pivat);
while(left < right) {
// 从右往左找比pivat小的数,没找到则跳过
while(left < right && arrays[right] >= pivat) {
System.out.println("大,看看我左边");
right--;
}
// 找到了就把右边的数放到左边去
if(left < right) {
System.out.println("小,移位");
arrays[left] = arrays[right];
System.out.println("现在状态\t" + Arrays.toString(arrays));
left++;
}
// 从左往右找比pivat大的数,没找到则跳过
while(left < right && arrays[left] < pivat) {
System.out.println("小,看看我右边");
left++;
}
// 找到的了就把左边的数放到右边去
if(left < right) {
System.out.println("大,移位");
arrays[right] = arrays[left];
System.out.println("现在状态\t" + Arrays.toString(arrays));
right--;
}
}
// 最后剩下的坑位放pivat
arrays[left] = pivat;
System.err.println("完成\t" + Arrays.toString(arrays));
return left;
}

public void quickSort(int[] arrays, int left, int right) {
if(left < right) {
int index = this.partition(arrays, left, right);
quickSort(arrays, left, index - 1);
quickSort(arrays, index + 1, right);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: