插入排序

来源:互联网 发布:村山富市 知乎 编辑:程序博客网 时间:2024/06/05 19:43

时间复杂度:O(n^2)
定义:假定第一个元素有序,然后将后面的元素按照顺序依次插入前面的序列,使数列依然有序。

函数一:

#include <stdio.h>int insert(int* a, int len){int i = 0, j = 0, tmp = 0;for(i=0; i<len-1; i++){j = i;tmp = a[i+1];while(tmp < a[j] && j>=0 ){a[j+1] = a[j];j--;}a[j+1] = tmp;}}int main(){int a[9] = {12, 9, 0, 3, -12, 11, 7, 11, 1};insert(a, 9);int i = 0;for(i=0; i<9; i++)printf("%d  ", a[i]);printf("\n");return 0;}


函数二:

#include<stdio.h>void insert(int* a, int n){int i,j,tmp;for(i=1;i<n;i++){tmp = a[i];j=i-1;while(j>=0 && tmp<a[j]){a[j+1]=a[j];j--;}a[j+1]=tmp;}}int main(){int i=0;int a[9]={12,38,56,0,21,7,9,16,99};insert(a,9);for(i=0;i<9;i++){printf("%d ",a[i]);}return 0;}


0 0
原创粉丝点击