选择排序。
选择排序的算法原理是:第一趟从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,基数排序不是基于关键字比较的排序算法。
纯手打,望采纳,不清楚还可共同探讨。
追问嗯,回答的很好,不过,你对插入排序的举例中有一点我不太清楚:就是你最后的结论“由上例可知,插入排序会随着初始数据集的顺序不同而比较次数不同。”这句话中的初始数据集的顺序,你的意思是123这个顺序与234这个顺序不同?我理解的“初始数据集的顺序不同”的意思是这样的:比如说123与132或者321等,而不是123与234的不同,我理解的对吗?
追答我的意思不是123这个顺序与234这个顺序不同,而是整个数据集合12345的顺序不同,你可以这样理解:初始有序序列为0,第一次的插入顺序是12345,第二次插入的顺序是23415,它们的比较次数不同。 这样有没有更好理解一点?你的理解是对的,是我的例子没有说清楚,不好意思啊OWO
本回答被提问者和网友采纳