几种经典的排序算法之插入排序

基本思想:插入排序的基本思想就是,将一组数分为“排好序的”和“没排好序的”两部分,将为排序的数字插入到排好序的数字中。

如何排序:保存未排序的数字中的第一个并命名为key,将它与排好序的数字一一对比,若大于对比的数字,则将数字赋值给第一个未排序的数字,key继续向前对比。

图示:

几种经典的排序算法之插入排序_第1张图片
第一趟排序

上图为第一趟,此时7大于5,则5不必转移位置,7保持原位。

几种经典的排序算法之插入排序_第2张图片
第二趟排序

上图为第二趟排序,此时key为2,拿key与7比较,2比7小,则将7向后转移一位,即转移至2所在的位置,key继续跟5比较,5大于2,则5也向又转移一位。5前没有数字,则key为最小数,将key放置到5的原始位置。

几种经典的排序算法之插入排序_第3张图片
第三趟排序

上图为第三趟排序,原理同第二趟相同

几种经典的排序算法之插入排序_第4张图片
第四趟排序

上图为第四趟排序,此时最后一个数字也进行了插入排序,所以是最后一次

C语言实现:

#include
void insertionSort(int *array,int n);
int main(){
    int array[] = {5,2,7,6,1};
    insertionSort(array,5);
    int i = 0; 
    for(i;i<5;i++)
        printf("%3d",array[i]); 
    return 0;
}
void insertionSort(int *array,int n){
    int i;
    int key;
    for(i=1;i

insertioonSort()函数详解:

void insertionSort(int *array,int n){
    int i;
    int key;
    //i从1开始,将第0个数字视为已排好序的第一个数字
    //i视为未排序数字中的第一个 
    for(i=1;i

你可能感兴趣的:(几种经典的排序算法之插入排序)