快速排序的过程?

求高手解释一下,我看不懂。
2025-02-02 23:50:04
推荐回答(4个)
回答1:

首先要排的是第一个数a,目的是:a前的数比a小,a后的数比a大
49 38 65 97 76 13 27
第一次:27 38 65 97 76 13 49 (49和27比)
第二次:27 38 65 97 76 13 49 (49和38比)
第三次:27 38 49 97 76 13 65 (49和65比)
第四次:27 38 13 97 76 49 65 (49和13比)
第五次:27 38 13 49 76 97 65 (49和97比)
第六次:27 38 13 49 76 97 65 (49和76比)
始终拿无序序列的第一个数与其他数进行比较,49;
49在序列的左侧时与从右侧起第一个没有和它比较过的数比,小于49则和49调换位置,大于49的位置不变;49在右侧时方法类似;
(27 38 13)49(76 97 65)这样得到两组长度较短的无序数,非别排序
用27和38,13比较
用76和97,65比较

回答2:

快速排序的概念很简单就是把序列分成三部分。一个中点,中点的左边都比中点“小”,右边都比中点“大”
然后再分别对左右两边进行相同的处理。可以想象这样会把序列不断切分。而当序列小于三个元素的时候,这么处理的结果就是从小到大排列。
这部分很简单,关键是怎么分那三部分。一般是这么做,换个序列...
8
4
2
1
7
首先取正中的元素,这里是2
然后再左边找比2大的,第一个8就是
再从右边找比2小的,是1
我们交换8和1
1
4
2
8
7
然后继续,1之后比2大的是4
但是8之后已经没有比2小的了,我们只能把2和4交换,同时记录中点的位置(因为2挪地方了)
1
2
4
8
7
然后2左边只有1个元素不用再处理了
右边的4
8
7我们以8为中点。
按照刚才的方法这里需要把8和7交换
4
7
8
8右边没了,处理4
7,就不说了,而且这个本身顺序也没问题,拼起来就是
(1)
2
((4
7)
8)

回答3:

使用qsort
qsort(指向字符串的指针,多少元素,每个元素的大小(字节),比较函数);

要自己练习下就知道啦

回答4:

你指的具体是哪种快速排序???