快速排序的随机化算法C语言版

#include<stdio.h>
#include<stdlib.h>
void quicksort(int *a, int left, int right);
void swap(int *a,int i,int j);
int randpartition(int *a, int left, int right);
int main()
{int a[]={81,94,11,96,12,35,17};int N=sizeof(a)/sizeof(int);int i,j;quicksort(a, 0, N-1);for(i=0;i<N;i++)printf("%d ",a[i]);}
//快排
void quicksort(int *a, int left, int right)
{if (left < right) {int p = randpartition(a, left, right);quicksort(a, left, p - 1);quicksort(a, p + 1, right);}}//快排数组划分
int partition(int *a, int left, int right)
{int x = a[right];//选择主元,选择最右边的一个 int p = left - 1;//保存了一个变量,记录比主元小的所有元素中,在序列中存放的位置最靠右的那个for (int i = left; i < right; i++) {//从当前序列的第一个循环到倒数第二个(right-1)元素,来进行和主元比较。if (a[i] <= x) {p++;swap(a, p, i);//把a[i]和a[p]交换,就是说把a[p]右边的元素和当前元素换位置}}//循环结束,整个序列就变成了三部分,从a[left..p]是比主元小的元素,a[p+1..right-1]是比主元大的元素,a[right]则是主元。swap(a, p+1, right); //将主元和比它大序列的第一个元素互换位置return p+1;}
//交换数组a中的a[i]和a[j]
void swap(int *a,int i,int j)
{int temp = a[i];a[i] = a[j];a[j] = temp;
}//快排数组随机划分
int randpartition(int *a, int left, int right)
{int r = rand()%(right);//生成一个随机数,即是主元所在位置swap(a,right,r);//将主元与序列最右边元素互换位置,这样就变成了之前快排的形式。return partition(a,left,right);//直接调用之前的代码}

快速排序的随机化算法C语言版相关推荐

  1. 经典的十种排序算法 C语言版

    经典的十种排序算法(C语言版) 1.冒牌排序 冒牌排序的特点 ​ 一趟一趟的比较待排序的数组,每趟比较中,从前往后,依次比较这个数和下一个数的大小,如果这个数比下一个数大,则交换这两个数,每趟比较后, ...

  2. 《数据结构与算法 C语言版》—— 3.8习题

    本节书摘来自华章出版社<数据结构与算法 C语言版>一 书中的第3章,第3.8节,作者:徐凤生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3.8习题 1名 ...

  3. 《数据结构与算法 C语言版》—— 2.5上机实验

    本节书摘来自华章出版社<数据结构与算法 C语言版>一 书中的第2章,第2.5节,作者:徐凤生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.5上机实验 实 ...

  4. 《数据结构与算法 C语言版》—— 2.7习题

    本节书摘来自华章出版社<数据结构与算法 C语言版>一 书中的第2章,第2.7节,作者:徐凤生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.7习题 1描 ...

  5. c语言实现感知器算法,感知器算法(c语言版).doc

    感知器算法(c语言版).doc includestdio.hincludetime.hdefine C 1void mainint i,j,k,N1,N2,x202,s3,d20,array204,w ...

  6. c语言遍历算法的头文件,图优先遍历算法(C语言版).doc

    图优先遍历算法(C语言版) 众炼向饭桨泞奉源柿虐萧宰徽强药邻摘甭膜酣猖椅支习洋瞪较效笋盏厚婪跳博险僳乘措笆却问谬闸皇机兽偿谐芹违邹竞芬襟竣备烘令救汇邵叙鹰扭肾钙苏辅捕先是埠郧苛三驯溅烂右井准刮修柒拿苇 ...

  7. 【转载】CRC32校验算法C语言版(查表法)

    先放原文链接:CRC32校验算法C语言版(查表法) 这几天搞串口通信,用到CRC32,把以前用到的东西整理一下,方便以后使用. STM32F103 芯片自带的CRC32硬件算法,匹配上位机CRC32算 ...

  8. C语言double里的deta,蚁群算法(C语言版)

    蚁群算法的C语言实现 //段海滨教授主编的<蚁群算法原理及其应用>附录里的C程序代码. 并有几位网友修改. //Basic Ant Colony Algorithm for TSP #in ...

  9. c语言高精度算法阶乘_任意位数的高精度阶乘算法 C语言版

    文章作者:姜南(Slyar)文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作. 今天就研究这个"任意位数的高精度阶乘算法"了,通过和大三的一个学 ...

最新文章

  1. 神经元产生的雌激素可能是一种新型的神经调节剂
  2. python for循环九九乘法表_python—用for循环、while循环和一句话打印九九乘法表
  3. Python | 5分钟搞定 Python3 元组
  4. 7-27 御膳房 (5 分)
  5. CSS,让100%的宽度,自动减10,让100%的高度,自动减10,可以加减乘除
  6. Maximal Rectangle
  7. 2019-02-21-算法-进化
  8. swiper图片轮播(左中右) (含源码)- 案例篇
  9. 总结 | 深度学习之Pytorch入门教程
  10. revit二次开发概念_BIM百科 | Revit二次开发入门--创建一个简单的程序
  11. 上采样层什么意思_佛前上三柱香、磕三个头是什么意思!
  12. Java基础IO流(知识体系详解)【五】
  13. 图像语义分割(3)-Dilated Conv:使用空洞卷积进行多尺度语义聚合
  14. 《剑指offer》第二十三题(链表中环的入口结点)
  15. Unity 接入科大讯飞语音sdk
  16. 东北大学c语言作业答案,{东北大学}2018年秋学期《画法几何及土木建筑制图》在线作业2课后参考答案...
  17. 软件设计师2018上半年+历年资料
  18. 张三丰是小龙女的儿子的详细证明及理论依据(转)
  19. 我的小程序之个人所得税计算器
  20. CDH集群中HDFS单点故障解决方案:HA模式(High Availability)

热门文章

  1. oracle cpio,怎么打开cpio文件
  2. sdc--- input_delay和output_delay的设置和分析
  3. 需要更新的以前的visual studio 2010实例Microsoft Visual Studio 2010 Service Pack 1(exe)
  4. html缩放背景不缩放_如何将缩放背景更改为有趣的照片或视频
  5. 速卖通运营策略‘新店铺如何做好定位及选品’
  6. JavaScript绘制情人节玫瑰
  7. python支持字符类型吗_python核心数据类型 -- 字符串类型
  8. 6.824 paper MapReduce: Simplified Data Processing on Large Clusters
  9. linux tun 读取数据,Linux Tun/Tap网口(/dev/net/tun)的读写方法
  10. linux路由表命令,linux下路由表详解