首页 > 试题广场 >

若一组记录的排序码为(32, 1, 52, 25, 88,

[填空题]
若一组记录的排序码为(32, 1, 52, 25, 88, 56),则利用快排的方法从小到大排序,以第一个记录为基准得到的一次划分结果为:1
32, 1, 52, 25, 88, 56
以第一个数为基准,小的挨个往左,大的挨个往右,从左往右挨个操作。
1,32,52,25,88,56
1,32,52,25,88,56
...
25,1,32,52,88,56
发表于 2019-11-08 16:30:40 回复(0)
(32, 1, 52, 25, 88, 56)
以32为基准,第一次1比32小——>(1, 32, 52, 25, 88, 56)
第二次52大于32的不动——>(1, 32, 52, 25, 88, 56)
第三次25小于32——>(25,1, 32, 52, 88, 56)
后面都比32大,所以第一轮排序完就是25,1, 32, 52, 88, 56
发表于 2020-08-06 16:05:18 回复(2)
(32, 1, 52, 25, 88, 56)
以第一个数32为基准   
交换一次(25<->32):25 1 52 32 88 56     
交换二次(52<->32):25 1 32 52 88 56 
第一次划分结束
.......
以下为补充知识:
第二次划分
左半 以32的左边第一个数25为基准
(1<->25):1 25 32 52 88 56
第二次划分结束
第三次划分
右半 以32的右边第一个数52为基准
(无操作)1 25 32 52 88 56
第三次划分结束
第四次划分 以52的右边第一个数88为基准
(88<->56) 1 25 32 52 56 88
快速排序完毕!


编辑于 2020-04-26 22:47:32 回复(0)
(25,1,32,52,88,56)  我是这样写的 就错了 莫名奇妙的
发表于 2019-08-18 00:21:55 回复(3)

根据快速排序(Quick Sort)算法的思想,我们可以选择一个基准元素(pivot element),并根据其值将记录分为小于、等于和大于三个部分,然后递归地对小于和大于部分进行排序,直到整个记录序列有序。

在这个例子中,我们选择第一个记录(32)作为基准元素,并按照以下步骤进行一次划分:

  1. 初始化两个指针:左指针(left)指向记录序列的第一个元素,右指针(right)指向记录序列的最后一个元素。

  2. 从右指针开始,向左遍历记录序列,直到找到一个小于等于基准元素的记录。

  3. 从左指针开始,向右遍历记录序列,直到找到一个大于等于基准元素的记录。

  4. 如果左指针和右指针没有相遇,则交换左指针和右指针所指的记录。

  5. 重复步骤2和步骤3,直到左指针和右指针相遇。

  6. 当左指针和右指针相遇时,将基准元素与左指针所指的记录进行交换,将基准元素放在了其正确的位置上。

  7. 划分结束,记录序列被划分成了小于基准元素、基准元素和大于基准元素三个部分。

根据以上步骤,一次划分结果为:(25, 1, 32, 52, 88, 56),其中基准元素32被放置在了正确的位置上,小于32的记录在基准元素的左边,大于32的记录在基准元素的右边。

发表于 2023-04-11 11:49:34 回复(0)
32,1,52,25,88,56        左指针i,右指针j
左指针i:52  右指针j:25    交换得 32,1,25,52,88,56       
 i++,j--  因为 i > j, 所以32与j交换     交换得 25,1,32,52,88,56
发表于 2023-03-08 15:09:17 回复(0)
32,1,52,25,88,56
以32为基准
第一次从右1向左探小,到右3,得 25,1,52,32,88,56
第二次从左1向右探大,到左3,得 25,1,32,52,88,56
结束,第一轮结果为 25,1,32,52,88,56

发表于 2022-01-13 21:34:06 回复(0)
(25,1,32,52,88,56) 以及 {25,1,32,52,88,56},应该都算正确。
发表于 2022-05-07 13:00:23 回复(0)
(32, 1, 52, 25, 88, 56)
以32为基准,第一次1比32小——>(1, 32, 52, 25, 88, 56)
第二次52大于32的不动——>(1, 32, 52, 25, 88, 56)
第三次25小于32——>(25,1, 32, 52, 88, 56)
后面都比32大,所以第一轮排序完就是25,1, 32, 52, 88, 56
发表于 2022-02-10 10:53:34 回复(0)
32,1,52,25,88,56
以32为基准,第一轮分割:
25,1,52,32,88,56(从右往左交换比32小的25)
25,1,32,52,88,56(从左往右交换比32大的52)
整个序列遍历完毕,第一轮分割结束
发表于 2021-02-19 16:54:55 回复(0)