现在的位置: 首页 > 综合 > 正文

【算法】插入排序

2012年10月07日 ⁄ 综合 ⁄ 共 596字 ⁄ 字号 评论关闭

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

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

算法代码为:

 

#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");
    }
    


}

 

 

抱歉!评论已关闭.