【算法】快速排序
2015-02-08 23:16
148 查看
快速排序:
冒泡排序的改进,每次取数组第一个元素,然后轮训整个数组,找到中间位置,每次都将数据分开两部分,再次选择基准元素的中间为止,每次都把分开的部门再次分割,分治算法的体现。
视频:http://www.tudou.com/programs/view/gtnrNh7yh6I/
Java代码实现:
冒泡排序的改进,每次取数组第一个元素,然后轮训整个数组,找到中间位置,每次都将数据分开两部分,再次选择基准元素的中间为止,每次都把分开的部门再次分割,分治算法的体现。
视频:http://www.tudou.com/programs/view/gtnrNh7yh6I/
Java代码实现:
package com; public class QuickSort { public static int getMiddle(Integer[] list, int low, int high) { int tmp = list[low]; // 数组的第一个作为中轴 while (low < high) { while (low < high && list[high] > tmp) { high--; } list[low] = list[high]; // 比中轴小的记录移到低端 while (low < high && list[low] < tmp) { low++; } list[high] = list[low]; // 比中轴大的记录移到高端 } list[low] = tmp; // 中轴记录到尾 return low; // 返回中轴的位置 } public static void _quickSort(Integer[] list, int low, int high) { if (low < high) { int middle = getMiddle(list, low, high); // 将list数组进行一分为二 _quickSort(list, low, middle - 1); // 对低字表进行递归排序 _quickSort(list, middle + 1, high); // 对高字表进行递归排序 } } public static void quickSort(Integer[] list) { if (list.length > 0) { _quickSort(list, 0, list.length - 1); } } public static void main(String[] args) { Integer[] arr = { 1, 4, 3, 5, 2 }; quickSort(arr); for (int i : arr) { System.out.print(i + "\t"); } } }
相关文章推荐
- 算法记录:二进制快速排序
- 插入排序,合并排序,堆排序,快速排序,计数排序的实现(算法导论)
- 读书笔记 算法导论 快速排序 QuickSort 使用最后一个元素作为pivot
- [每周一算法]快速排序
- 快速排序 php实现 算法学习
- 快速排序的C#实现以及,算法导论上之后一个习题的思考
- 白话经典算法系列之六 快速排序 快速搞定
- 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。
- C#算法-------(五)快速排序
- java基础知识之 算法 【冒泡排序】【快速排序】
- C#算法-------(四)快速排序
- 【经典算法】快速排序
- 快速排序与快速选择算法(quick sort and quick select algorithm)
- 算法导论 第七章快速排序与随机快速排序
- 算法:快速排序
- 算法与数据结构——快速排序 Quick Sort
- c#与算法--快速排序
- 算法复习:快速排序
- 【快速排序】算法实现
- 算法的独家记忆--快速排序