ソート
バケットソート
O(N + M)の時間計算量は、Nは、Mは、バケットの数(範囲のすなわち数)であり、値の数をソートします
空間複雑性O(M)、Mは、バケットの数(範囲のすなわち数)であります
利点
・高速
短所:
・スペース・消費
・ソートする配列要素は整数であることができる
-これ項目に対応する番号を介さず、理由はわずか数並べ替えの、本当の意味でのバケットソートではありません
コード
// 对数据范围在 0~10000 之间的整数进行排序
#include <iostream>
using namespace std;
int main()
{
int bucket[10001],n,tmp,i;
// init array book with 0s
for(i=0;i<=10001;i++)
bucket[i]=0;
// take input
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&tmp);
bucket[tmp]++;
}
// sort and print
for(i=0;i<10001;i++)
{
while(bucket[i]>0)
{
cout<<i<<' ';
bucket[i]--;
}
}
}
バブルソート
O(N ^ 2)の時間計算量の数は、Nをソートする数であります
宇宙複雑さO(N)
短所:
・スロー
コード
// 冒泡排序(从大到小)
#include <iostream>
using namespace std;
struct student
{
char name[10];
int weight;
};
int main()
{
struct student bubble[100],tmp;
int n,i,j;
// take input
scanf("%d", &n);
for(i=0;i<n;i++)
{
scanf("%s", bubble[i].name);
scanf("%d", &bubble[i].weight);
}
// sort
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)
{
if(bubble[j].weight < bubble[j+1].weight)
{
tmp = bubble[j+1];
bubble[j+1] = bubble[j];
bubble[j] = tmp;
}
}
}
// print
for(i=0;i<n;i++)
cout << bubble[i].name <<' ' << bubble[i].weight << endl;
return 0;
}