插入是稳定的,冒泡稳定性取决于是否有等号,选择是不稳定的
#include<iostream> #include<algorithm> #include <vector> #include<string.h> #include<ctype.h> #include<math.h> using namespace std; void fun(); int main() { fun(); return 0; } void fun() { int temp,i,j, arr1[8]={19,1,23,17,19,55,84,15}, arr2[8]={19,1,23,17,19,55,84,15}, arr3[8]={19,1,23,17,19,55,84,15}; //插入排序 for(i=1;i<8;i++) { if(arr1[i-1]>arr1[i]) { temp=arr1[i]; for(j=i-1;temp<arr1[j]&&j>-1;--j) arr1[j+1]=arr1[j]; arr1[j+1]=temp; } } //冒泡排序 for(int flag=1,i=1;i<8&&flag;++i) { for(flag=0,j=0;j<8-i;++j) { if(arr2[j]>arr2[j+1]) { flag=1; temp=arr2[j+1]; arr2[j+1]=arr2[j]; arr2[j]=temp; } } } //选择排序 for(int flag,i=0;i<8-1;i++) { flag=i; for(j=i+1;j<8;j++) if(arr3[j]<arr3[flag])flag=j; if(i!=flag) { temp=arr3[i]; arr3[i]=arr3[flag]; arr3[flag]=temp; } } for(i=0;i<8;i++) cout<<arr1[i]<<" "; cout<<endl; for(i=0;i<8;i++) cout<<arr2[i]<<" "; cout<<endl; for(i=0;i<8;i++) cout<<arr3[i]<<" "; cout<<endl; }
结果为下图所示
时间: 2024-12-26 04:34:49