• 插入排序——算法导论


    最近在看MIT的算法导论,在网易公开课上有这门课的视频,正好讲义也在图书馆借到了,有在看的小伙伴可以一起加油。

    绪论中以插入排序为例,讲述了算法中非常重要的两个概念时间复杂度T(n)和空间复杂度。详细地对程序花费时间T。

    伪代码:

       INSERTION-SORT(A) 

    1 for j←2 to length[A]                                   
    2     do  key←A[j]                                        
    3          Insert A[j] into the sorted                
    4               sequence A[1..j-1].                      
    5          i←j-1                                                
    6          while i>0 and A[i]>key
    7                do A[i+1] ← A[i]
    8                     i←i-1
    9         A[i+1]←key

    根据伪代码我实现了一下插入排序,今天开始的平时训练,开始注意格式规范,还有更专业地添加注释:

     1 #include <iostream>
     2 /*************************************************************************************************************
     3 *
     4 * Function Name  :InsertionSort
     5 * Description    :One of the famous sorting    algorithm
     6 *                    insert a number into a sorted sequence
     7 *                    the new sequence still in order
     8 * Input          :An random array
     9 * Output         :sorted array
    10 * Return         :None
    11 *
    12 **************************************************************************************************************/
    13 void InsertionSort(int* a,int n)
    14 {
    15     int key;
    16     for(int j=1;j<n;j++)
    17     {
    18         key = a[j];
    19         for(int i=j-1;i>=0&&a[i]>key;i--)
    20         {
    21             a[i+1]=a[i];                   //a[i+1]←a[i]
    22             a[i]=key;
    23         }
    24     }
    25 }
    26 
    27 
    28 void main()
    29 {
    30     int a[10]={8,6,11,55,2,9,3,23,1,32};
    31     printf("排序前:");
    32     for(int i=0;i<10;i++)
    33         printf("%d ",a[i]);
    34     printf("
    ");
    35     InsertionSort(a,10);
    36     printf("排序后:");
    37     for(int i=0;i<10;i++)
    38         printf("%d ",a[i]);
    39     system("pause");
    40 }

    实验结果:

    算法比较基础,简单,只是作为自己的一个整理,大家不喜勿喷。

  • 相关阅读:
    去除inline-block元素间间隙的几种方法
    数组去重的几种方法
    CSS实现水平居中的几种方法
    CSS实现垂直居中的几种方法
    实现一个jQuery的API
    jQuery从入门到放弃
    JavaScript中的DOM与BOM
    JavaScript中的原型与原型链
    爬取某东娃娃评价,生成词云
    vm提示:如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权。否则,请按“取消(C)”按钮以防损坏。
  • 原文地址:https://www.cnblogs.com/zjuthantics/p/5017930.html
Copyright © 2020-2023  润新知