C语言 快速排序
发布网友
发布时间:2022-04-29 20:37
我来回答
共3个回答
热心网友
时间:2022-05-22 02:29
首先,你要理解快速排序的算法,它是一种递归的算法。每次选择一个基准,让该基准左边的数全小与他,右边的全大于它,这样就是一次循环,将数据分成两段,每次再找基准分成两段。
if (s1<j) qsort(s1,i);
if (s2>i) qsort(i,s2);
就是在分成的左右两段中再排序。
热心网友
时间:2022-05-22 03:47
这个程序很糟糕,void qsort(long,long); 不知道是声明还是调用,声明就应该写再main前面(void qsort(long s1,long s2); ),调用就应该写成调用的形式(qsort(s1,s2); )而且你的调用没有传值过去,
还有a[i]中i不可能是long型,
if (s1<j) qsort(s1,i);
if (s2>i) qsort(i,s2);
其实就是排第一遍之后再进行第二遍排序,直到排序完成。
热心网友
时间:2022-05-22 05:21
1.上面有一个全局i和sqort的i,是不是把sqort里面那个i的定义去掉就可以了
不用去掉,全局变量和函数内的互不相干,作用域不同.
2. if (s1<j) qsort(s1,i);
if (s2>i) qsort(i,s2);
这两句是怎么回事,我是按1 3 2 4 5这几个数想的,谁能举个能用到上面两句话的例子
楼上答了.
3. i+=1,j-=1;这句是为什么
i+=1 相当于 i=i+1;
j=j-1;
4.j--,i++;是为什么
j=j-1;
i=i+1;
如何用c语言输入10个数并进行排序?
1、首先打开编辑软件,新建一个c程序空文件,引入标准库和主函数,定义一个QuickSort函数用来排序,下面首先编写排序函数的:2、此处用到快速排序思想,通过一趟排序将要排序的数据分割成独立的两部分,即这里用i和j两个变量分割数据,然后一部分的所有数据都比另外一部分的所有数据都要小,接着对这两部分...
C语言的快速排序的算法是什么啊?
快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有...
C语言中快速排序法的原理及应用
“快速排序法”使用的是递归原理,下面我结合一个例子来说明“快速排序法”的原理。首先给出一个数组{53,12,98,63,18,72,80,46, 32,21},先找到第一个数--53,把它作为中间值,也就是说,要把53放在一个位置,使得它左边的值比它小,右边的值比它大。{21,12,32, 46,18,53...
用C语言写个完整程序,包括希尔排序和快速排序
(f): a d e b c f g h i k l j m p o n q s u z x y v t r w(d): a c b d e f g h i k l j m p o n q s u z x y v t r w(c): a b c d e f g h i k l j m p o n q s u z x y v t r w(i): a b c d e f g h i k l j m...
c语言排序的方法
排序主要分为以下几种。1.冒泡排序:通过循环比较前后数的大小进行交换。最后使得数组有序。2.快速排序:首先将第一个数作为一个基准,然后循环,将前半部分大于该数的与后半部分小于该数的进行交换,使得以该数为分界线,前面的小于该数,后面的大于该数,然后分前后两部分继续。
菜鸟提问 c语言关于快速排序
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 s,int t){ int i,j;int temp;if(s<t){ te...
C语言:编写程序,把字符数组中的字母按由小到大 的顺序排列并输出_百 ...
const void *b) { return *(char*)a - *(char*)b; // 这里记住一定要用排序的元素类型的指针做强制装换并且再取指针指向的值。}int main() { char s[] = "kjferu21398dyfkaqpoia"; qsort(s, strlen(s), 1, cmp); printf("%s", s); return 0;} ...
数据结构(c语言)中快速排序什么时候排序最慢,什么情况下使用快速排序...
当待排序的序列已经有序(不管是升序还是降序),此时快速排序最慢,一般当数据量很大的时候,用快速排序比较好,为了避免原来的序列有序,一般采用改进的快速排序算法,在排序之前随机交换两个元素的位置,就可以达到目的了,有一本书,叫《算法设计、分析与实现:C、C++和java》徐子珊著。可以看看,里面...
C语言中说的按字典顺序是什么意思?
C语言排序算法:快速排序:1、假设我们给一个int数组进行排序,数组中数字初始序列为int a[9]={3,6,5,9,7,1,8,2,4} 2、分析快速排序的原理前,我们先声明一些东西,首先设置一个临时变量用来存放随机取出数组中的一个数,一般我们取数组的第一个元素也就是说temp=a[0],同时设置两个游标分别...
C语言,大牛推荐的七大经典排序算法
C语言大牛雅荐的七大经典排序算法 1.冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换它们两个对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;针对所有的元素重复以上的步骤,除了最后一个;重复步骤1~3,直到排序完成。 2.选择排序 在未排序序列中找到最...