C/C++实现快速排序的方法
2014-12-01 14:43
791 查看
快速排序不会直接得到最终结果,只会把比k大和比k小的数分到k的两边。(你可以想象一下i和j是两个机器人,数据就是大小不一的石头,先取走i前面的石头留出回旋的空间,然后他们轮流分别挑选比k大和比k小的石头扔给对面,最后在他们中间把取走的那块石头放回去,于是比这块石头大的全扔给了j那一边,小的全扔给了i那一边。只是这次运气好,扔完一次刚好排整齐。)为了得到最后结果,需要再次对下标2两边的数组分别执行此步骤,然后再分解数组,直到数组不能再分解为止(只有一个数据),才能得到正确结果。 ―― 取自百度百科(链接)
C/C++ 实现:
复制代码 代码如下:void quick_sort(int* a, int low, int high){ if (low >= high) {
return;
} int first = low; int last = high; int key = a[first]; while (first < last) {
while (first < last && a[last] >= key) {
--last;
}
a[first] = a[last];
while (first < last && a[first] <= key) {
++first;
}
a[last] = a[first];
}
a[first] = key;
quick_sort(a, low, first-1);
quick_sort(a, first+1, high);
}
您可能感兴趣的文章:
相关文章推荐
- 在C++中实现库动态初始化的一种方法
- 在C++中实现文件的读写的基本方法
- [原] C#泛型实现流中C/C++格式的struct数据的通用读取方法
- C++实现模板顺序表和三种排序方法
- java中用句柄与封装基础类的方法实现C++中指针的部分效果
- C++中实现多态的方法
- 转:使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法
- 使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法
- C++实现PDA中打开和关闭软键盘的方法
- 在C++中实现文件的读写的基本方法
- Ajax - JavaScript之实现私有属性、像C++和Java一样支持基于类的继承方法之例子
- (轉貼) C++接口与实现分离的2种方法 (C/C++)
- 使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法
- C++Builder/Delphi中透明Panel及透明窗口的实现方法
- 模拟实现VC中的handle的c++方法,欢迎指正~~~
- C++接口与实现分离的2种方法
- 探索c++的函数pow()的实现方法·数学与程序设计的结合(zz)
- C++实现tail的方法(还不完善)
- 一种实现 Java调用C++的DLL的方法
- 浮点性(float)转化为字符串类型 自定义实现和深入探讨C++内部实现方法