快速排序 c#实现
2016-08-11 16:57
411 查看
最近的面试都开始问算法的知识了。而算法里最常问到的就是 快速排序的实现
这里说下我的理解,防止以后忘记,如果有错的地方希望各位能指出问题所在。
其实快速排序就是在数组中找一个数来当对比的对象,之后分两部分,一部分是从前到后一部分是
从后到前的方式去替换数组内的数,一直到当前划分出的数组内只有1个数的时候结束
这里说下我的理解,防止以后忘记,如果有错的地方希望各位能指出问题所在。
其实快速排序就是在数组中找一个数来当对比的对象,之后分两部分,一部分是从前到后一部分是
从后到前的方式去替换数组内的数,一直到当前划分出的数组内只有1个数的时候结束
private void QuickSort(List<int> arr, int left, int right) { if (left < right) { int index = (left + right)/2;//取中间的数的下角标 int key = arr[index]; //取中间的数,作为对照数 int i = left; int j = right; while (true) { while (arr[i] <= key && i != index) //一直循环直到碰到第一个小于对照数时跳出循环,并且判断是否是相同的数,防止死循环 (去除对照数,防止把对照数当做相同的数出现运算错误) { i++; } while (arr[j] > key)//同上,碰到第一个大于对照数跳出 { j--; } if (i >= j)//如果前面的位置大于后面的证明数组循环一遍了,跳出循环 { break; } swap(arr, i, j); } QuickSort(arr, left, i); QuickSort(arr, i + 1, right); } } private void swap(List<int> arr, int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; }
相关文章推荐
- C# 实现快速排序
- 快速排序非递归c#实现
- C#中的delegate以及利用List<T>中delegate快速实现排序、查找
- C#实现所有经典排序算法(选择排序,冒泡排序,快速排序,插入排序,希尔排序)
- 分治法:用C#实现快速排序
- 快速排序---c#实现
- 快速排序的C#实现以及,算法导论上之后一个习题的思考
- C#实现的3种排序算法--冒泡排序、选择排序、插入排序
- 在C#中实现对ListView点击列标题自动排序功能
- C#利用DataGridView实现数据的快速输入
- 在C#中实现对ListView点击列标题自动排序功能
- C#.net ListView item 拖动排序实现方法
- C#中实现DataGrid双向排序
- 快速排序及代码实现
- C#实现的3种排序算法--冒泡排序、选择排序、插入排序
- vb应用--快速排序-法实现二维数组的指定列排序
- 在C#中实现对ListView点击列标题自动排序功能
- 快速排序 C语言实现
- C# ListView中点击表头ColumnClick实现对相应列的排序
- 用C#实现在ListBox中拖动排序