早教吧作业答案频道 -->数学-->
关于数据结构排序算法的问题插入排序、选择排序、冒泡排序、基数排序、堆排序的算法中其比较次数与初始数据集顺序无关的是?请说明理由.
题目详情
关于数据结构排序算法的问题
插入排序、选择排序、冒泡排序、基数排序、堆排序的算法中其比较次数与初始数据集顺序无关的是?请说明理由.
插入排序、选择排序、冒泡排序、基数排序、堆排序的算法中其比较次数与初始数据集顺序无关的是?请说明理由.
▼优质解答
答案和解析
选择排序.
选择排序的算法原理是:第一趟从n个待排关键字中找出最小的关键字放到第一个位置,如果要找到最小关键字则必须所有元素都进行比较,所以第一趟要比较n-1次;第二趟从剩下的n-1的元素中再通过n-2次的比较找出最小的元素…………以此类推,不管初始有没有序,它都一共要进行n-1趟排序共n(n-1)/2次比较,时间复杂度始终是O(n平方)
至于其他的,拿插入排序举例:插入排序的基本思想是每次将一个待排的记录按其关键字大小插入到前面已经排好序的子序列中.试想,如果已经排好序的子序列是123,待排记录为45,插入4时,只要和3比较一次就知道排在3后面,对5排序时只要与4比较一次就知道该排在4后面,共比较2次.如果已经排好序的子序列是234,待排记录为15,插入1时,它要从后往前依次比较3次才能找到自己的位置,同样对5排序时只要与4比较一次,共比较4次.由上例可知,插入排序会随着初始数据集的顺序不同而比较次数不同.
BTW,基数排序不是基于关键字比较的排序算法.
纯手打,望采纳,不清楚还可共同探讨.
选择排序的算法原理是:第一趟从n个待排关键字中找出最小的关键字放到第一个位置,如果要找到最小关键字则必须所有元素都进行比较,所以第一趟要比较n-1次;第二趟从剩下的n-1的元素中再通过n-2次的比较找出最小的元素…………以此类推,不管初始有没有序,它都一共要进行n-1趟排序共n(n-1)/2次比较,时间复杂度始终是O(n平方)
至于其他的,拿插入排序举例:插入排序的基本思想是每次将一个待排的记录按其关键字大小插入到前面已经排好序的子序列中.试想,如果已经排好序的子序列是123,待排记录为45,插入4时,只要和3比较一次就知道排在3后面,对5排序时只要与4比较一次就知道该排在4后面,共比较2次.如果已经排好序的子序列是234,待排记录为15,插入1时,它要从后往前依次比较3次才能找到自己的位置,同样对5排序时只要与4比较一次,共比较4次.由上例可知,插入排序会随着初始数据集的顺序不同而比较次数不同.
BTW,基数排序不是基于关键字比较的排序算法.
纯手打,望采纳,不清楚还可共同探讨.
看了 关于数据结构排序算法的问题插...的网友还看了以下:
快速排序算法在排序过程中,在待排序数组中确定一个元素为基准元素,根据基准元素把待排序数组划分 2020-05-26 …
对N个数排序,最坏情况下时间复杂度最低的算法是()排序算法 2020-05-26 …
下列排序算法中,其中()是稳定的.A、堆排序,冒泡排序B、快速排序,堆排序C、直接选择排序,归并排 2020-07-23 …
求解设待排序的记录共7个,排序码分别为(8,3,2,5,9,1,6)对其进行冒泡排序.已排序码求解 2020-07-23 …
以下关于排序的说法中,正确的是()A.排序就是将数按从小到大的顺序排序B.排序只有两种方法,即直接 2020-07-23 …
给定长度为n的任意序列,任何通过比较关键字而进行排序的排序算法中,与关键字的比较次数都不小于nlo 2020-07-31 …
求一个算法!如何将以排好的拓扑序列按学分、学期进行排序?注:课程的先后顺序已排好,可以让课程集中到前 2020-11-14 …
内部排序算法比较(1)对以下7种常用的内部排序算法进行比较:起泡排序、直接插入排序、简单选择排序、快 2020-11-28 …
批处理怎么实现一组数字按顺序编排.按升序或按降序.比如213和231把它们排成123.批处理能实现排 2020-12-05 …
关于排列组合有序排列,无序组合那请问排队问题是属于有序还是无序比如说1,2,3,排队那么排成1213 2020-12-05 …