排序算法
1.插入排序
2.桶排序
基本思想:将初始数据分为有序部分和无序部分;每一步将无序部分的第一个值插入到前面已经排好序的有序部分中,直到插完所有元素为止。
步骤如下:
假如有[5,2,3,9,4,7] 6个元素值,有序部分为[2,3,5,9],无序部分为[4,7];接下来要把无序部分的“4”元素插入到有序部分,来展示一下插入排序的运行过程。
//3.插入排序
#include
using namespace std;
int a[1000],n;
int main(){cin>>n;for(int i=0;i>a[i];}for(int i=1;i=0;j--){if(a[j+1]前数,那循环结束了。 break;} }}for(int i=0;i
稳定性:在使用插入排序时,元素从无序部分移动到有序部分时,必须是不相等(大于或小于)时才会移动,相等时不处理,所以直接插入排序是稳定的。
时间复杂度:选择排序的时间复杂度为O()。
适用场景:待排序序列的元素个数不多(<=50),且元素基本有序。
基本思想:将待排序的数值k,装入第k个桶,桶号就是待排序的数值,顺序输出各桶的值,得到有序的序列。
例如有 [5,4,9,4],把数值依次装入桶a; 那可以看出 a[4] = 2,a[5] = 1,a[9] = 1;
那输出时候,按照顺序输出有桶号 4 4 5 9;
步骤:
编程对1万以内的数进行排序:
#include
using namespace std;
int a[100000],b[100000],n;
int main(){cin>>n; for(int i=1; i<=n; i++){cin >> a[i]; //输入桶号b[a[i]]++; // 统计桶号数量1 }for(int i=1; i<=10000; i++){while(b[i]!=0){ //当有桶号 cout<