1. 计数排序 一共进项了n(n-1)/2次比较和2n次元素移动
1 | //名次计算函数,比较次数为1+2+3+4+...+n-1 |
1 | //按名次排序,计算出名次后进行排序称为计数排序 |
2. 选择排序
1 | //找出最大元素 |
可以运行的选择排序
1 | #include <iostream> |
3. 冒泡排序
1 | //左右相邻比较,左侧元素比右侧大,则左右交换,完成一次冒泡过程之后末尾元素是最大元素 |
1 | //即时终止的冒泡排序 |
可以运行的冒泡排序
1 | #include <iostream> |
4. 插入排序
- 在有序数组中插入元素,保持顺序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30template<class T>
void insert(T [],int &n,const T& x)
{
int i;
//一定会有常量x插入到数组的,比较x与a[i],数组末尾元素向后移动一位
for(i=n-1;i>=1&&x<a[i];i--)
a[i+1]=a[i];
a[i+1]=x;
n++;
}
template<class T>
void insert(T a[],int n,const T&x)
{
int i;
for(i=n-1;i>=0&&x<a[i];i--)
a[i+1]=a[i];
a[i+1]=x;
}
template<class T>
void inserttionSort(T a[];int n)
{
for(int i=1;i<n;i++)
{
T t=a[i];
insert(a,i,t);
}
}
可以运行的插入排序
1 | #include <iostream> |