问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

c语言快速排序 谁能给我讲讲下面的代码啥意思

发布网友 发布时间:2022-04-29 20:37

我来回答

2个回答

热心网友 时间:2022-05-22 02:50

设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,
然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。
值得注意的是,快速排序不是一种稳定的排序算法,也就是说,
多个相同的值的相对位置也许会在算法结束时产生变动。

一趟快速排序的算法是:
1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;
2)以第一个数组元素作为关键数据,赋值给key,即key=A[0];
3)从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值A[j],将A[j]和A[i]互换;
4)从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的A[i],将A[i]和A[j]互换;
5)重复第3、4步,直到i=j; (3,4步中,没找到符合条件的值,即3中A[j]不小于key,
4中A[i]不大于key的时候改变j、i的值,使得j=j-1,i=i+1,直至找到为止。
找到符合条件的值,进行交换的时候i, j指针位置不变。
另外,i==j这一过程一定正好是i+或j-完成的时候,此时令循环结束)。

热心网友 时间:2022-05-22 04:08

做一次位置排序
菜鸟提问 c语言关于快速排序

其实,最想说明的是那段交换的代码 R[j]^=R[i];R[i]^=R[j];R[j]^=R[i];一定要排除 i==j 的情况。即自己与自己交换的情况。如:a=9;a^=a;/*a=0*/ a^=a;/*a=0*/ a^=a;/*a=0*/ a就不再是10了。include<stdio.h> include<stdlib.h> void quicksort(int R[],int...

C语言快速排序代码

quicksort(a,11);for(int c=1;c<11;c++)printf("%3d",a[c]);}

C语言快速排序

/快速排序算法/ int Partition(int D[], int l, int r){ D[0]=D[l];while (l<r) { while (l<r && D[0]<D[r]) r--;D[l]=D[r];while (l<r && D[0]>=D[l]) l++;D[r]=D[l]; } D[r]=D[0];return r;} void Qsort(int D[], int l, int r){ int p...

用C语言编写函数实现快速排序(升序),在主函数中输入数组数据,并调用该...

//排序的算法是二分法,N的对数时间复杂度。。。//如果有疑问,我们可以再探讨。。。include<stdlib.h> include<string.h> include<stdio.h> bool merge(int * array,int p,int q,int r){ if(!(p<<q<r)&&p>=0&&r<=sizeof(array)/sizeof(array[0])-1){ return false;} int * le...

C语言中快速排序法的原理及应用

一般来说,冒泡法是程序员最先接触的排序方法,它的优点是原理简单,编程实现容易,但它的缺点就是--程序的大忌--速度太慢。附上快速排序代码:include<stdio.h>void quicksort(int a[],int left,int right){ int i,j,temp; i=left; j=right; temp=a[left]; if(left>right...

C语言实现将数组的六个元素按从小到大的顺序输出?

C语言实现将数组的六个元素按从小到大的顺序输出,可以采用内部排序算法对数组的元素进行排序,然后输出排序后的数组,就可以得到按从小到大的顺序输出。以快速排序为例的排序代码:void quickSort(int a[],int l,int r) { if(l>=r)return;int i = l;int j = r;int key = a[l];//选择...

C语言一个快速排序的问题 我应该是传参的问题 但我不知道该如何改 请大...

下面是《算法导论》里快速排序的实现,希望对你有用:include<stdio.h>void swap(int *a,int *b){ int t =*a; *a = *b; *b = t; return;}int partition(int a[],int start,int end){ int x = a[end]; int i = start -1; int j; for(j= start...

快速排序,看了解释还是不会,求通俗点的

下面排序C语言的排序快速代码,参考一下 void sort(int *a, int left, int right){ if(left >= right)/*如果左边索引大于或者等于右边的索引就代表已经整理完成一个组了*/ { return ; } int i = left; int j = right; int key = a[left]; while(i < j) ...

用C语言快速排序法编程按从大到小输出下面十个数(24,2,8,32,87,45...

QuickSort(Low+1,high,array); /*对基准点右边的数再执行快速排序*/ } } void main() { int array[]={24,2,8,32,87,45,16,2,12,40};int i=9;QuickSort(0,9,array);for(;i>=0;i--)printf("%d ",array[i]);getch();return 0;} ...

C语言的快速排序的算法是什么啊?

快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有...

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
...关闭摄像头和麦克风权限是不是就不能接视频会议了? 大白鹅冬季喂什么饲料大白鹅喂什么饲料上膘快 大白鹅预混料 大白鹅喂什么饲料上膘快 索尼yy2952蓝牙耳机怎么配对 索尼WF-1000 XM3怎样配对连接蓝牙 冷藏室后面下方的排水孔会有水滴到储水盒怎清洗? oppo r7怎么默认sim卡 oppor7手机sim卡1怎么打开 OPPOR7cSIM卡强行停止了怎么才能回复正常使 OPPOr7sm 运营商被隐藏了,现在想打开要如何打开 请哥哥姐姐为我设计个简单的快速排序算法,C语言的,谢谢啦! 英文漂亮手写字体都有哪些?求大神回复,常用的那种 C语言快速排序 漂亮的英文字体 C语言有算法怎么做快速排序呢。 用C语言编写一个快速排序算法 输入10个数 [英文字体]有哪些很漂亮的?求详细! 要好看的英文字体,发图,满意必采纳 c语言实现快速排序 C语言的快速排序的算法是什么啊? 关于快速排序C语言算法 快速排序算法c语言 C语言,快速排序算法 C语言快速排序的代码 C语言快速排序代码 上海黄金交易所,在合肥有分公司么? 如何快速将CAD标注尺寸对齐?- 问一问 CAD中如何快速标注尺寸? 缥的同音字,并组词。谢谢 窦娥冤中所有通假字、生字及注音都有什么? 美图秀秀好看的英文字体,最好附图。 用C语言编写函数,要实现快速排序算法或者冒泡法 C语言 快速排序 求一款英文字体。!!!有图片。对了分全给你了 最好给上效果图。 怎样使用C语言实现如下算法: 输入任意10个数,用快速排序算法,按降序排序后输出 如何评价电影《超强台风》? 电影《超强台风》中的外国人为什么一直和台风战斗? 电影《超强台风》中有哪些不合理的设定? 请问eclipse搭建SSM(spring+springmvc+mybatis)一定要用maven来搭建吗 对电影《超强台风》的评价 海螺肉里什么东西不能吃 超强台风电影 电影<超级台风>是怎样拍摄的? 电影(超强台风)读后感 电影《超强台风》里讲的是真的吗?具体是哪一年登录的 一般的空调风机电容多大 超强台风的主要内容 求超强台风高清百度云资源 京瓷181kx打印机的双面打印怎么设置?属性-基本里面的双面打印是灰色的 掐人中应该怎么掐?带图
  • 焦点

最新推荐

猜你喜欢

热门推荐