快速排序的随机化算法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. cascader 动态加载 回显_ElementUI cascader级联动态加载回显和搜索看这个就够了
  2. java导入excel 实例_Java数据导入功能之读取Excel文件实例
  3. SAP Hybris安装包里自带的Maven和Gradle
  4. 数据库的那些事(全是干货)
  5. Windows下怎样安装Tomcat
  6. Flutter StatefulBuilder 用来实现局部数据刷新
  7. HDFS数据恢复模式
  8. go语言slice使用的时候遇到的奇怪现象以及分析
  9. tomcat 未指定服务器,[转载]Tomcat环境的建立
  10. 软件设计师备考知识03
  11. DeepSpeaker_RawNet_GE2E 声纹识别对比
  12. Linux服务器部署JavaWeb项目
  13. 数字签名的原理和应用
  14. 重启计算机可以使用什么组合键,死机重启电脑快捷键有哪些
  15. 计算机专业学生的学期规划,大学生大一下学期规划
  16. IOS 音乐播放器 (附源码)
  17. office2016 office2019 office2013 ----一键安装:
  18. 拉钩网前端项目实战04
  19. 《华为研发》阅读 - 2
  20. DAMA数据治理学习笔记-数据治理

热门文章

  1. National Australia Group UK increases business flexibility with
  2. Go学习(二十):启动HTTP服务的方式
  3. Camera摄像头成像方向和LCD刷屏方向
  4. C#:OleDbDataAdapter 进行增,删,改,查操作
  5. 【甄选靶场】Vulnhub百个项目渗透——项目二十一HACKLAB_VULNIX(NFS挂载,ssh毒化)
  6. linux dev net tun,使用TUN / Bridge支持编译内核,但我找不到/ dev / net / tun
  7. 即时战略游戏将领指挥AI方案设想(转帖)
  8. sftp之概述、搭建、命令
  9. Android 蓝牙开发(十)A2DP源码分析
  10. 对症下药 – 疑难杂症之提权技术