1、冒泡排序(bubble sort ),冒泡排序就是对于一个序列里面的数据元素两两比较,如果逆序,则转换,反之,继续比较。程序代码如下:
void swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
void bubble_sort(int a[], int len)
{
int i = 0, j = 0, temp = 0;
for(i = 0; i < len -1; i++)
for(j = len -2; j >= i; j--)
if(a[j] > a[j+1])
swap(&a[j], &a[j+1]);
}
2、简单选择排序算法:经过n-i+1次遍历,选出序列中关键字最小的数据项,与第i位交换
void simple_selection_sort(int a[], int len)
{
int i = 0, j = 0, min = 0;
for(i = 0; i < len - 1; i++)
{
min = i;
for(j = i+1; j < len; j++)
if(a[min] > a[j])
min = j;
if(i != min)
swap(&a[min], &a[i]);
}
}
3、直接插入排序(straight insertion sort):将一个记录插入到已经排序好的记录中,使得记录的个数加一。
void straight_insertion_sort(int a[], int len)
{
int i = 0, j = 0, temp = 0;
for(i = 1; i < len; i++)
{
if(a[i] < a[i-1])
{
temp = a[i];
for(j = i - 1; temp < a[j] && j >= 0; j--)
a[j+1] = a[j];
a[j+1] = temp;
}
}
}