匿名用户
1级
2014-05-22 回答
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include
#include
#include
#include
#include
#include
#include
usingnamespacestd;
inta[22];
intmain()
{
inti;
cout<
for(i=0;i<10;i++)
cin>>a[i];
sort(a,a+10);
for(i=0;i<10;i++)
cout<
return0;
}
思路:利用冒泡排序,重复地走访过要排序的数列,一次比较两个元素,将小的放到前面并输出。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
排序方法大致有如下几种:
冒泡排序(bubble sort) — O(n^2)
鸡尾酒排序(Cocktail sort,双向的冒泡排序) — O(n^2)
插入排序(insertion sort)— O(n^2)
桶排序(bucket sort)— O(n); 需要 O(k) 额外空间
计数排序(counting sort) — O(n+k); 需要 O(n+k) 额外空间
合并排序(merge sort)— O(nlog n); 需要 O(n) 额外空间
原地合并排序— O(n^2)
二叉排序树排序 (Binary tree sort) — O(nlog n)期望时间; O(n^2)最坏时间; 需要 O(n) 额外空间
鸽巢排序(Pigeonhole sort) — O(n+k); 需要 O(k) 额外空间
基数排序(radix sort)— O(n·k); 需要 O(n) 额外空间
Gnome 排序— O(n^2)
图书馆排序— O(nlog n) with high probability,需要 (1+ε)n额外空间