快排
来源:互联网 发布:11选5遗漏数据 编辑:程序博客网 时间:2024/06/10 10:22
一直使用c++ STL的sort,没有自己亲自写过,上代码。
#include <stdio.h>
int Partition(int arry[], int low, int high)
{
//no need to bound condition
int key = arry[low];
while(low < high)
{
while(low<high && arry[high]>=key) --high;
arry[low] = arry[high];
while(low<high && arry[low]<=key) ++low;
arry[high] = arry[low];
}
arry[low] = key;
return low;
}
//分治
void QSort(int arry[], int low, int high)
{
if(low >= high)
return;
int ipos = Partition(arry,low,high);
QSort(arry,low,ipos-1);
QSort(arry,ipos+1,high);
}
int main()
{
const int iarrynum = 10;
int arry[10] = {10,9,8,7,6,5,4,3,2,1};
QSort(arry,0,iarrynum-1);
int i;
for(i=0; i<iarrynum; ++i)
{
printf("%d\t",arry[i]);
}
printf("\nDone\n");
}
其中patition有多个变种,其中之一可以是
partition(A,left,right)
{
p=select pivot in A[left,right];
swap A[p] and A[right];
store = left;
for i=left to right-1 do
if A[i] <= A[right] then
swap A[i] and A[store]
store++
swap A[store] and A[right]
return store
}
而且select pivot可以有多个变种,由外部提供。
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排。
- JAVA字符串转日期或日期转字符串
- Paxos在大型系统中常见的应用场景
- oralce 序列的使用
- 图像变换 -拉普拉斯变换(cvLaplace)
- myeclipse调试快捷键及代码注释
- 快排
- "Host 'xxx' is not allowed to connect to this MySQL server"解决方案
- 学习使用shell script 笔记--------鸟哥的私房菜
- 优秀程序员的十个习惯
- HDOJ 2509 Nim博弈
- 丢手帕问题 (java实现)
- Tomcat5.5 Administration Web Application配置
- FPGA_8_16
- J2EE的核心API与组件