快速排序
来源:互联网 发布:ios图片模糊软件 编辑:程序博客网 时间:2024/06/04 00:15
最近在看剑指offer,有几道题惹我无限遐想,快排真是个神奇的算法。特来总结以下几道题。先来回忆快排排序,相信很多人已经很熟悉了。
快速排序的基本思想是:选定一个初始值对数组进行划分,左边数组都小于初始值右边都答大于初始值。然后继续对左右子数组继续划分,已达到整体对数组排序的目的。
我们先来实现对数组 的划分:目的很简单选定一个中间值,左右划分,,返回枢纽值下标。代码如下。
int partition(data*data,int low,int high)
{
int pivotkey=data[0];
while(low<high){ while(low<high&&data[high]>=pivotkey) high--; swap(data,low,high); while(low<high&&data[low]<=pivotkey) low++; swap(data,low,high);}return low;
}
算法思想很简单,low,high分别指向数组的起点和终点,如果high定位的值比pivotkey大 high指针前移,直到出现不满足条件的值,此时交换 low和high 定位的值。同理low指针也同样的步骤 。直到low==high,此时结束循环 返回 low的下标或high的下标。
下边得出快速排序的递归算法。
void qsort(data*data,int low,int high)
{
int pivot;
if(low
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- CSS框模型(Box Model)与图片透明属性
- Mac版Github客户端的配置和使用
- 位移枚举
- HttpClient4.2 Fluent API学习
- android一些你知道的或不知道的style
- 快速排序
- ListView.setEmptyView不起作用
- linux:通配符和正则
- 关于Android手机调用系统照相机和录像机的问题
- 打算闲的时候写一个tcp_pool.刚开始做,就结束了.因为我走到了死胡同.
- SQL服务器名称的更改
- PHP 多维数组根据某个字段排序
- css div的宽度随内部元素的宽度的变化而变化
- Android使用Glide加载Gif.解决Glide加载Gif非常慢问题