用C/C++码经典算法
Posted dianesohungry
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C/C++码经典算法相关的知识,希望对你有一定的参考价值。
1 排序
桶排序
时间复杂度 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;
以上是关于用C/C++码经典算法的主要内容,如果未能解决你的问题,请参考以下文章