排序时间复杂度O(n^2)
时间复杂度高,优点是啥?它是稳定排序
啥叫稳定排序?
待排序的记录序列中可能存在两个或两个以上关键字相等的记录。排序前的序列中a[i]=a[j](i<j).若在排序后的序列中a[i]仍然在a[j]前,则称所用的方法是稳定的。
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序错误就把他们交换过来。走访元素的工作是重复地进行,直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这玩意,它没有内置函数,所以得自己写。
记得先搞这玩意:
int x[10]={1,5,2,8,5,8,3,9,4,19};
稳定版:
bool cmp(int a,int b){
return a<b;
}
void bsort(int n){
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++)
if(cmp(x[i],x[j])) swap(x[i],x[j]);
}
}
不稳定版:
bool cmp(int a,int b){
return a>=b;
}
void bsort(int n){
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++)
if(cmp(x[i],x[j])) swap(x[i],x[j]);
}
}
验证来喽:
这是稳定的:
这是不稳定的: