[算法学习笔记]排序——插入排序

来源:互联网 发布:跳跃网络充值积分 编辑:程序博客网 时间:2024/06/06 05:59

插入排序

插入排序是最简单的一种排序方法,对于少量的数据排序是十分有效的。插入排序十分容易理解,平时玩扑克时,在理牌的过程中就是使用了插入排序的思想。
可以通过这张图片来直观的了解

这里写图片描述

下面是一张插入排序的动态图。

这里写图片描述

下面使用c语言来实现这一算法

#include <stdio.h>void insertionSort(int [], int);int main(){    int num[10];    int i;    for(i = 0; i < 10; i++){        scanf("%d", num + i);    }    insertionSort(num, 10);    for(i = 0; i < 10; i++){        printf("%d\t", num[i]);    }    printf("\n");    return 0;}void insertionSort(int num[], int size){    int i;    for(i = 1; i < size; i++){        int key = num[i];        int j = i - 1;        while(j >= 0 && num[j] > key){            num[j + 1] = num[j];            j--;        }        num[j + 1] = key;    }}

下面是使用python来完成的插入排序,用到了切片的技巧

#coding:utf-8def insertionSort(n):    if len(n) == 1:        return n;    b = insertionSort(n[1:])    m = len(b)    for i in range(m):        if n[0] <= b[i]:            return b[:i] + [n[0]] + b[i:]    return b + [n[0]]if __name__ == '__main__':    num = raw_input().split(" ");    for i in range(len(num)):        num[i] = int(num[i]);    num = insertionSort(num)    print num

感觉python的黑魔法好厉害 0.0

1 0
原创粉丝点击