【算法】插入排序

插入排序类似于玩扑克牌时候的排序方式:

首先将待排序序列分为有序集和无序集,明显初始状态下,有序集为待排序序列的第一个元素,其余的为无序集。

算法代码为:

 

#include <stdio.h>

#include <stdlib.h>



void insertationSort();//插入排序 





int main(int argc, const char * argv[])

{

    

    insertationSort();

    return EXIT_SUCCESS;

}void insertationSort()

{



    int phone[10] = {3,5,7,2,5,9,8,90,54,35};

    int temp = 0;

    int i = 0,j = 0,n = 0;

    for (i = 1; i < 10; i ++) { //外层循环,由第二个元素到最后一个元素

        temp = phone[i];

        j = 0;

        while (temp >= phone[j] && j < i){ //在有序集中扫描

            j ++;

        }

        

        if (temp < phone[j]) {  //有序集中含有比哨兵大的元素,找到其位置进行交换并且将哨兵移动到相应位置,否则哨兵位置固定不动。

            for (n = i;n > j; n --) {

                phone[n] = phone[n -1];

            }

            phone[j] = temp;

        }

        //否则有没有

        

        printf("第%d趟:   ",i);

        for(j =0; j < 10;j ++)

        {

            

            printf("%d   ",phone[j]);

            

        }

        

        printf("\n");

    }

    





}


 

 

你可能感兴趣的:(插入排序)