博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构 排序(快速排序)
阅读量:4993 次
发布时间:2019-06-12

本文共 1748 字,大约阅读时间需要 5 分钟。

//排序--快速排序法#include
#include
#include
#include
/*快速排序它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序:第一步:在数据集之中,选择一个元素作为"基准"(pivot)第二步:所有小于"基准"的元素,都移到"基准"的左边;所有大于"基准"的元素,都移到"基准"的右边第三步:对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止*///位置调换void MySwap(int *arr,int a,int b){ int temp = arr[a]; arr[a] = arr[b]; arr[b] = temp;}//一轮快速排序 singleint SingleSort(int *arr, int low, int high){ //获取枢轴 int pv = arr[low]; while (low < high){ //high向左移动 while (low
= pv){ high--; } //此时 high下标的元素的值不大于枢轴 可以调换位置 MySwap(arr, low, high); //注意 此时枢轴的位置在high上 high的值就是Pv //low向右移动 while (low
< pv){ low++; } //此时 low下标的元素的值大于枢轴 可以调换位置 MySwap(arr, low, high); //注意 此时枢轴的位置在low上 low的值就是Pv } //返回最终pv所在的位置 此时必定 low==high return low;}//快速排序void QuickSort(int *arr, int low, int high){ if (low >= high) { return; } //排序一轮 int pivot = SingleSort(arr, low, high); //排序产生的左数组 QuickSort(arr, low, pivot - 1); //排序产生的右数组 QuickSort(arr, pivot + 1, high);}//打印数组void Print(int * arr, int num){ if (arr == NULL) { printf("传入参数不可以为空!\n"); return; } int i = 0; for (int i = 0; i < num; i++) { printf("%5d", *(arr + i)); } printf("\n");}void Test(){ int i = 0; int arr[10] = { 0 }; //定义时间类型变量 time_t ts; //生成随机数种子 srand((unsigned int)time(&ts)); for (i = 0; i < 10; i++) { arr[i] = (int)(rand() % 100); } //打印数组 printf("\n原始数据----\n"); Print(arr, 10); //快速排序 printf("快速排序之后的数据\n"); QuickSort(arr, 0,9); Print(arr, 10);}void main(){ Test(); system("pause");}

转载于:https://www.cnblogs.com/zhanggaofeng/p/5745642.html

你可能感兴趣的文章
Android:onNewIntent()触发机制及注意事项
查看>>
珠宝公司之感想
查看>>
项目问题
查看>>
scss侦听并压缩
查看>>
我有接口文档, 你有酒吗?
查看>>
iOS - Push 通知推送
查看>>
[FJOI2007]轮状病毒
查看>>
Azure AADSTS7000215 其中一种问题的解决
查看>>
关于吃苦
查看>>
uva 1629切蛋糕(dp)
查看>>
生成awr报告
查看>>
cocos2d-x 3.0rc2 对于每个包执行情况的重要平台 (超级方便)
查看>>
Android 深入解析光传感器(二)
查看>>
Ansible@一个高效的配置管理工具--Ansible configure management--翻译(八)
查看>>
【bzoj4552/Tjoi2016&Heoi2016】排序——二分+线段树/平衡树+线段树分裂与合并
查看>>
Windows Internals学习笔记(八)IO系统
查看>>
sql插件,SQLPrompt
查看>>
Objetive-C 属性和线程安全
查看>>
mybatis pagehelper实现分页
查看>>
很牛的javascript日期转换函数
查看>>