资源简介
分治法的另外一种排序算法,快速排序。有注释,便于阅读,因为交换时使用的引用,暂时归为C++,C语言版稍后奉上。
代码片段和文件信息
#include
#include
void swap(int &m int &n) //用引用交换两个数
{
int temp;
temp = m;
m = n;
n = temp;
}
int Partition(int *array int low int high)
{
int i= low j = high pivot = array[low];
while(i < j) //直到交换结束
{
while(i < j && array[j] >= pivot) //从后往前,直到找到小于基准值
j--;
if(i < j) //判断是否越界
swap(array[i++] array[j]); //交换,并且i自加
while(i < j && array[i] <= pivot) //从前往后,直到找到大于基准值
i++;
if(i < j) //判断是否越界
swap(array[i] array[j--]); //交换,并且j自加
}
return j; //返回基准下标值
}
void QuickSort(int *array int low int high)
{
int pivotpos; //基准元素所对应的位置
if(low < high)
{
pivotpos = Partition(array low high); //对数据进行划分,pivotpos是基准元素下标
QuickSort(array low pivotpos - 1); //前半部数据
QuickSort(array pivotpos + 1 high); //后半部数据
}
}
int main()
{
int n i;
printf(“输入需要排列数据的个数:“);
scanf(“%d“ &n); //录入需要排列的个数
int *array = (int *) malloc (sizeof(int ) * n);
printf(“请输入数据:\n“);
for(i = 0; i < n; i++)
{
scanf(“%d“ &array[i]); //录入未排序的数据
}
QuickSort(array 0 n - 1); //进行排序
printf(“排列后数据:\n“);
for(i = 0; i < n; i++) //输出排列结果
{
printf(“%d\n“ array[i]);
}
return 0;
}
/*
49
38
65
97
76
13
27
*/
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 27896 2013-11-04 14:23 QuickSort1\bin\Debug\QuickSort1.exe
文件 1583 2013-11-04 14:23 QuickSort1\main.cpp
文件 4219 2013-11-04 14:23 QuickSort1\obj\Debug\main.o
文件 1065 2013-11-04 14:09 QuickSort1\QuickSort1.cbp
文件 137 2013-11-04 14:10 QuickSort1\QuickSort1.depend
文件 241 2013-11-04 14:23 QuickSort1\QuickSort1.layout
目录 0 2013-11-04 14:23 QuickSort1\bin\Debug
目录 0 2013-11-04 14:23 QuickSort1\obj\Debug
目录 0 2013-11-04 14:23 QuickSort1\bin
目录 0 2013-11-04 14:23 QuickSort1\obj
目录 0 2013-11-04 14:23 QuickSort1
----------- --------- ---------- ----- ----
35141 11
相关资源
- vs2005骑士巡游问题-分治法C
- 百度seo快排点击系统源码[易语言]拨号
- 实现快速排序
- 算法代码回溯法,动态规划,分治法
- 分治法计算Voronoi图
- 舍伍德——快速排序源码报告和算法
- 算法分析与设计实训实验报告
- 分治法实现三维最接近点对问题
- 利用分治法求解空中飞行管理问题
- 汇编语言实现快速排序
- Strassen矩阵乘法—分治法实现代码
- 实现快速排序MPI并行计算
- 最近点对算法,分治法,随机数
- 7大排序算法实现程序快速排序,冒泡
- 格雷码问题 分治法产生n位的格雷码
- 求一组数组的两个最大值和两个最小
- 归并分类快速排序算法。
- 归并排序与快速排序时间复杂度实验
- openmp实现快速排序
- 直接插入排序/快速排序/选择排序/冒
- 普通快速排序随机快速排序算法实验
- 六种内部排序算法比较:直接插入排
- 循环赛日程表(分治法)
- 分治法实现最接近点对问题的三维推
- 基于MIPS汇编语言的快速排序
- 动态规划法与分治法的区别
- 假币问题-减治法在组合问题中的应用
- 快速排序的并行程序 QuickSort MPI
- 利用汇编语言实现快速排序
- 蛮力法 分治法 动态规划求最大字段和
评论
共有 条评论