排序算法之快速排序(JAVA)
2012-12-25 09:12
323 查看
<pre name="code" class="java">public class QuickSort { /** * 1.先从数列中取出一个数作为基准数。 * 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 * 3.再对左右区间重复第二步,直到各区间只有一个数。 * 时间复杂度为O(nlog n) * 不稳定排序方式 * * @param nums 待排序数组 * @return 输出有序数组 */ public static int[] sort(int[] nums, int low, int high) { if (low < high) { int mid = partition(nums, low, high); //左边 sort(nums, low, mid - 1); //右边 sort(nums, mid + 1, high); } return nums; } public static int partition(int[] nums, int low, int high) { int key = nums[low];//基准数 int i = low;//左指针 int j = high;//右指针 if (low < high) { while (i < j) { //形象点可以理解为,右指针左移 while (i < j && nums[j] >= key) { j--; } if (i < j) { nums[i] = nums[j]; i++; } //形象点可以理解为,左指针右移 while (i < j && nums[i] <= key) { i++; } if (i < j) { nums[j] = nums[i]; j--; } } //把key填入最后的位置,即基准数位 nums[i] = key; } return i; } public static void main(String[] args) { int[] nums = {2, 7, 8, 3, 1, 6, 9, 0, 5, 4}; QuickSort.sort(nums, 0, nums.length - 1); System.out.println(Arrays.toString(nums)); } }
相关文章推荐
- 排序算法Java——交换排序(之快速排序)
- 必须知道的八大种排序算法【java实现】(一) 冒泡排序、快速排序
- 八种排序算法Java实现-快速排序
- 黑马程序员----Java中几种常用排序算法(选择排序、冒泡排序、快速排序)
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序
- 【排序算法】快速排序原理及Java实现
- 排序算法——交换排序(冒泡排序、快速排序)(java)
- Java中常见的数组排序算法(包括冒泡,选择,插入,快速排序)
- [排序算法]:Java实现冒泡排序和快速排序
- Java技术栈(2)排序算法(冒泡,快速排序)
- 【排序算法】快速排序原理及Java实现
- 排序算法(六):JAVA实现快速排序
- 排序算法复习(Java实现)(三): 插入,冒泡,选择,Shell,快速排序
- 【常用排序算法】快速排序(Java实现)
- Java排序算法(四):快速排序
- 排序算法之快速排序(Java)
- 必须知道的八大种排序算法【java实现】(一) 冒泡排序、快速排序
- 排序算法之快速排序(Java)
- 排序算法Java实现(快速排序)