目录
1.插入排序
2.希尔排序
3.冒泡排序
4.快速排序
5.简单选择排序
5.1堆排序
5.2堆的插入删除
6.归并排序
7.基数排序
8.外部排序
一、排序
1.插入排序
插入排序的思想是每次将一个待排序的记录按照关键字的大小插入到前面已经排好序的子序列中,直到全部记录插入完成。
这里采用升序排列,每次带排序的元素都要和之前排好序的元素比较,比待排序元素大的就要往后一移动一位。
代码实现:
void InsertSort(int *arr , int n)
{
int i,j,temp;
for(i = 1 ; i < n ; i++)
{
if(arr[i] < arr[i-1]) //如果待排序数小于前面一个数就开始,否则不进行操作
{
temp = arr[i];
for(j = i-1 ; j >=0 && arr[j] > temp ; j--)
{
arr[j+1] = arr[j];
}
arr[j+1] = temp;
}
}
}
这里实现的代码和图有区别,图中是每次比较后交换,而这里是每次比较后后移。这里方便理解,采用的是后者。只要比待排元素大,就往后移动一位,否则,就跳出循环,此时的位置,就是待排元素要插入的位置。