黑马程序员之数据结构学习笔记:快速排序
来源:互联网 发布:软件测试转正心得体会 编辑:程序博客网 时间:2024/04/30 10:27
-------------------------------------2345王牌技术员联盟、2345王牌技术员联盟、期待与您交流!--------------------------------
快速排序思想:
快速排序是一种效率很高的排序算法,合并排序是基于位置的,而快速排序是基于值的,快速排序按照值对数组分区,先选定一个中值,把大于此值的放于一侧,小于的放于另一侧,接下来分别对两侧进行同样的操作,最后得到一个排序好的数组
采用递归算法实现如下:
/// <summary>
/// 快速排序的递归算法实现
/// </summary>
/// <param name="arr">排序数组</param>
/// <param name="low">数组的最低位</param>
/// <param name="high">数组的最高位</param>
/// 调用:
///int[] A = new int[] { 5, 3, 1, 9, 8, 2, 4, 7 };
///QuickSort(ref A, 0, A.Length - 1);
static void QuickSort(ref int[] arr, int low, int high)
{
int midKey;
if (low < high)
{
midKey = Partition(ref arr, low, high);
QuickSort(ref arr, low, midKey - 1);
QuickSort(ref arr, midKey + 1, high);
}
}
static int Partition(ref int[] arr, int low, int high)
{
int midKey = arr[low], keyValue = arr[low];
while (low < high)
{
while (low < high && arr[high] >= midKey)
{
--high;
}
arr[low] = arr[high];
while ( low < high && arr[low] <= midKey)
{
++low;
}
arr[high] = arr[low];
}
arr[low] = keyValue;
return low;
}
--------------------------------------------------- 2345王牌技术员联盟、2345王牌技术员联盟、期待与您交流!---------------------------------------------------------
- 黑马程序员之数据结构学习笔记:快速排序
- 黑马程序员之数据结构学习笔记:插入排序
- 黑马程序员------java学习笔记之数据结构
- 【黑马程序员-学习笔记】数据结构-查找与排序
- 黑马程序员之数据结构学习笔记:折半查找
- 黑马程序员技术博客之快速排序
- 【黑马程序员-学习笔记】数据结构-概念
- 【黑马程序员-学习笔记】数据结构-顺序表
- 黑马程序员_java基础学习笔记之排序算法(选择排序、冒泡排序
- 黑马程序员—Java基础学习笔记之排序算法:选择排序&冒泡排序
- 学习笔记之快速排序
- 黑马程序员-C#冒泡排序-学习笔记
- 数据结构学习笔记 --- 排序(冒泡排序、快速排序)
- 数据结构学习笔记 --- 排序(冒泡排序、快速排序)
- 数据结构学习之_快速排序法
- 算法学习笔记--排序之快速排序
- 黑马程序员-java学习之排序算法
- 数据结构学习--快速排序
- T-SQL 列表达式排序
- 游戏程序员图书推荐
- OSX: Mac 10.8.2关机慢的真正原因分析和临时解决
- Redis系列-存储篇list主要操作函数小结
- 第九章:颜色
- 黑马程序员之数据结构学习笔记:快速排序
- Maven generates jar file with main class setting and dependency libs copy
- Spring config different datasource based on different environment(dev, test, prod) Two ways now
- 利用Camera实现手电筒功能
- 关于getchar()函数_1
- 直接删除数据文件后无法进入系统的解决方案
- 关于随机数_5
- Config log4j in standalone app
- 353. Penny wise, pound foolish. 贪小便宜吃大亏