插入排序

来源:互联网 发布:华数传媒网络怎么退订 编辑:程序博客网 时间:2024/06/06 18:25

    说来惭愧,大学这几年一直没怎么好好研究算法,趁着今年开了算法课,就好好的把算法给学一学,先从插入排序开始吧:

#include<stdio.h>#include<stdlib.h>#define random(x) (rand()%x)int main(){    // Get numbers    int i, j, key;    int array[100];    for (i = 0; i < 100; i++) {        array[i] = random(9999);     }    // Display the intial result    for (i = 0; i < 100; i++) {        printf("%d\n", array[i]);     }    printf("Init Completed");    // Then we peform insertion sort    for (i = 1; i < 100; i++) {        key = array[i];        for (j = i-1; j >= 0; j--) {            if (array[j] > key) {                array[j+1] = array[j];            } else {                break;            }         }        array[j+1] = key;    }     // Out put the sorted result    for (i = 0; i < 100; i++) {        printf("\n%d", array[i]);    }}
基本上排序代码就中间的十行,还是算上了花括号的,思想很简单,从数组第一个数枚举到最后一个数,这是第一层循环,第二层循环找到已排序完成序列中新插入数的位置,并在寻找过程中不断把数的位置后移,这样就不断空出一个位置,直到找到这个位置后把新的key填入的这个位置。

空间复杂度O(n) 时间复杂度O(n^2)

0 0
原创粉丝点击