美文网首页
插入排序

插入排序

作者: 若雨千寻 | 来源:发表于2017-05-03 22:18 被阅读0次

前提条件:

-大多数情况下,为了简单起见只讨论从小到大的排序
-N是整数
-只讨论基于比较的排序(< > =有定义)
-只讨论内部排序,即加载到内存中的排序

相关概念

-稳定性:排序前相等的两个元素,排序后相对位置没有发生改变
-时间复杂度:时间复杂度是定量描述一个算法的运行的时间,一般与算法输入值的长度N有关,常用大O符号表述;

统一的入口

 void X_sort(int arr[] ,int N)
 ElenmentType 为数组类型  N 为数中元素的个数

示例图

插入排序.jpg

主函数

//插入排序
void Insertion_Sort(int arr[],int N){
   //每次取一个元素
   for (int p = 1; p < N; p++) {
       //存储取出的元素
       int tmp = arr[p];
       //与在它位置之前的元素进行比较
       for (int i = p; i > 0 && arr[i-1] > tmp; i--){
           //如果大于当前元素,则把两个元素互换顺序
           arr[i] = arr[i-1];
           arr[i-1] = tmp;
       }
   }
}

时间复杂度:

没有一种排序在任何情况下都是表现最好

最好情况:顺序 T = O(N)

最坏情况:逆序 T = O(N^2)

稳定性: 稳定

测试

int main(int argc, const char * argv[]) {
    //数组
    int arr[9] ={8,6,1,2,4,9,3,7,5};
   //冒泡排序函数
    Insertion_Sort(arr, 9);
   //打印排序后结果
    for (int j= 0; j< 9; j++) {
        printf("%d",arr[j]);
    }
    return 0;
}

输出

Printing description of arr:
(int [9]) arr = ([0] = 1, [1] = 2, [2] = 3, [3] = 4, [4] = 5, [5] = 6, [6] = 7, [7] = 8, [8] = 9)

相关文章

网友评论

      本文标题:插入排序

      本文链接:https://www.haomeiwen.com/subject/aabltxtx.html