zoukankan      html  css  js  c++  java
  • 八种排序整理(一)----直接插入排序

    因为学校考试以及毕设的事情有一段时间没有更新博客了,一直想把之前的知识整理一遍,这次是对八种排序算法的整理。

    基本概念:对于给定的一组记录,初始时假定第一个记录自成一个有序的序列,其余的记录为无序序列;接着从第二个记录

    开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直至最后一个记录插入到有序序列为止。

    稳    定    性:稳定

    时间复杂度: O(n^2)
        (1)初始数据正序,总比较次数:n-1
        (2)初始数据逆序,总比较次数:(n2+n-1)/2=O(n2)
        (3)初始数据无序,第i趟平均比较次数(i+1)/2,总次数为:(n2+3n)/4=O(n2)
        (4)可见,原始数据越趋向正序,比较次数和移动次数越少。

    
    
     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 void InsertSort(int par_array[], int array_size)
     6 {
     7     int i, j;
     8     int temp;
     9 
    10     for (i = 1; i < array_size; i++)
    11     {
    12         temp = par_array[i];
    13 
    14         for (j = i - 1; j >= 0; j--)
    15         {
    16             if (temp < par_array[j])
    17             {
    18                 par_array[j + 1] = par_array[j];
    19             }
    20             else
    21             {
    22                 break;
    23             }
    24         }
    25         par_array[j + 1] = temp;
    26     }
    27 }
    28 
    29 int main()
    30 {
    31     int i = 0;
    32     int a[] = {3, 5, 2, 1, 9, 0, 6, 4, 7, 8};
    33     int length = sizeof(a) / sizeof(a[0]);
    34 
    35     InsertSort(a, length);
    36 
    37     for (i = 0; i < length; i++)
    38     {
    39         printf("%d ", a[i]);
    40     }
    41     
    42     while(1);
    43 
    44     return 0;
    45 }
    
    
    
    
    
  • 相关阅读:
    如何修改 gitlab 的项目名称
    Vue 项目中 webSocket 的使用(服务端是 Java Spring boot)
    如何能选到好的车牌号
    实现微信,浏览器,App中H5的路线规划
    H5 navigator.geolocation demo
    npm package.json 中版本指定符号: ~ 、^、*
    小程序中静态资源绝对路径的写法
    重置gvim8 ctrl+f的翻页功能
    [TS]Map的基本操作
    [TS]闭包测试
  • 原文地址:https://www.cnblogs.com/kutoli/p/8329083.html
Copyright © 2011-2022 走看看