八大排序c++可运行精简版,一目了然
关于排序的稳定性
稳定的排序有
插入排序:(每次插入都是从后往前,两个数一样的话不会交换位置)
冒泡排序:(每次冒上去的都是最小的,两个数相同不会交换)
归并排序:(如果两个相等的数在同一个区间,显然后面的数不会跑到前面去,如果在不同的区间,后半个区间在归并后显然也是排在后面,可对照上面的代码)
基数排序:(两个数相同,如果从左到右扫描,那么前面的数肯定先被扔进桶内,如果从右往左扫描,那么先将右边的数扔到桶的后面,上面排序过程即是如此)
如果记不住的话,那么鬼插鸡毛,还记得住啊?记住,鬼插鸡毛很稳定哦,其他的都不稳定
鬼:归并排序,插:插入排序,鸡:基数排序,毛:冒泡排序
来,和我一起读,鬼插鸡毛很稳定,鬼插鸡毛很稳定,鬼插鸡毛很稳定……读个99遍
关于时间复杂度,除了快速排序,其他排序的最低时间复杂度和最坏时间复杂度相同,因为逆序的数组每次划分都需要O(i)(i = n, n-1,...)的时间,所以快速排序最坏为O(n^2)
好了,就到这里吧,看不懂的留言,楼主保证秒回~