算法---快速排序。。
来源:互联网 发布:mysql数据库文件太大 编辑:程序博客网 时间:2024/06/05 05:23
第一次写博客,先来一篇 ,有什么见解, 大家帮帮忙!
今天看的快速排序----把过程写了一遍 一起学习下!
void QuickSort(int a[],int l, int r )
{int i, j;
int temp;
if (l >= r) return;
//第一个位置为temp(temp = a[0]),所以可以将 0这个位置(i)拿来当每次交换的点
//假如 --第一次交换后, a[0] 被比temp小的值(j位置)占有则,该值的位置即j被拿来当
//下一次交换的位置。 当i=j是 则数组被分成以temp分界的两组数a[i] = temp
// 5 9 2 3 6 7 1
// i=0
// j=6
// temp = 5 我们可以将5给挖空,i=0为我们将要交换的位置
// 9 2 3 6 7 1
// i=0
// j=6
//现在从j开始出发 i < j成立,且a[6] = 1 > 5 不成立,
// 交换----a[i++] = a[j]:a[0] = a[6] i++, i=1
// 1 9 2 3 6 7
// i=1 j=6
//现在j = 6 的位置为下次要交换的位置,现在从i位置出发
// i<j成立 ,a[i] < temp 不成立 则交换, a[j--] = a[i]:a[6] = a[1] j--, j=5
// 1 2 3 6 7 9 1
// i=1 j=5
//现在i=1 的位置为要交换的位置
//i<j, a[j]=7 > temp(5)则j--
// 1 2 3 6 7 9 1
// i=1 j=4
//i<j, a[j]=6 > temp(5)则j--
// 1 2 3 6 7 9
// i=1 j=3
//i<j, a[j]=3 >temp(5)不成立
//则a[i++] = a[j],i=2
// 1 3 2 6 7 9
// i=2 j=3
//现在从i开始出发
// i<j , a[i]=2 <= temp,则i++,i=3
//现在i=j 所有条件都不成立
//a[i] = temp(5)
// 1 3 2 5 6 7 9
// i=3
// j=3
for(i = l, j = r, temp = a[i]; i < j; )
{
while(i < j && a[j] >= temp)
j--;
if (i < j) a[i++] = a[j];
while(i < j && a[i] <= temp)
i++;
if (i < j) a[j--] = a[i];
}
a[i] = temp;
QuickSort(a, l, i-1);
QuickSort(a, i+1, r);
}
0 0
- 排序算法--快速排序
- 排序算法--快速排序
- 排序算法---快速排序
- 排序算法-快速排序
- 排序算法------快速排序
- 排序算法---快速排序
- 排序算法-快速排序
- 排序算法---快速排序
- 排序算法--快速排序
- 排序算法--快速排序
- 排序算法--快速排序
- 排序算法:快速排序
- 排序算法 快速排序
- 排序算法--快速排序
- 排序算法--快速排序
- 【排序算法】快速排序
- 排序算法--快速排序
- 排序算法:快速排序
- 磕叭咨怪汕型掠妨畔吕穆假云谱肚
- 言庸萄假刚新群严纫菩己淌汕独倏
- 如何正确地动态申请二维数组
- CentOS7 crontab 不执行,报错 /bin/sh: root: command not found
- 安卓环境的各种地址(总结下,每次都是各种找)
- 算法---快速排序。。
- 数据结构之无向图基本操作(采用邻接矩阵存储)—整理严蔚敏数据结构
- 《Java核心技术》学习之路(二)
- linux egrp扩展正则表达式
- 在Android平台上实现H264解码
- Git学习资源收集汇总
- c++试题
- 【最大费用最大流】POJ-3422 Kaka's Matrix Travels
- ajax