• 排序算法插入排序(Insert sort)


    • 算法思想

      插入排序使用的是增量方法:将待排序数组A[1,n]分为有序部分A[1,j-1]和无序部分A[j,n],关键步骤是将无序部分中的元素逐个插入到有序部分中,使有序部分不断增加,最终使整个数组有序。

    • 伪代码

      //插入排序数组A[1,n]

      InsertSot(A,n)

        for i←2 to n

          do key←A[i]//待插入的数

             j←i-1

            while j>0 and A[j]<temp//从待插入的数开始比较

             do A[j+1]=A[j]

                j←j-1

             A[j+1]←key

    • 算法效率分析

         最好情况:如果序列原来就有序,因为每次循环只需比较一次,此时该算法运行时间最少。

             T(n)= O(n)

              最坏情况:如果序列原来是逆序,因为每次循环必须将key与有序部分的每个元素进行比较。

            T(n)= 1+2+...n-1=n(n-1)/2=O(n2)

    • Code
     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 
     4 int main()
     5 {
     6     FILE* fp = NULL;//输入文件指针
     7     int *array = NULL;//排序数组指针
     8     int key;//待插入元素
     9     int i,j;
    10     int N;//数组元素个数
    11     if(!(fp = fopen("Input.txt","r")))//打开输入文件
    12         return -1;
    13     fscanf(fp,"%d",&N);
    14     array = (int*)malloc(sizeof(int)*N);//分配内存空间
    15     for(i=0; i!=N; i++)
    16         fscanf(fp,"%d",array+i);
    17     for(i=1; i!=N; i++)
    18     { 
    19         key = array[i];
    20         j=i-1;
    21         while(j>=0 && key<array[j])
    22         {
    23             array[j+1] = array[j];
    24             j--;
    25         }
    26         array[j+1] = key;
    27     }
    28 
    29     for(i=0; i!=N; i++)
    30         printf("%d ",array[i]);
    31     printf("\n");
    32     fclose(fp);
    33     free(array);
    34     getchar();
    35     return 0;
    36 }
    • Running result

        Input:10   

           3 5 4 -1 2 34 53 10 7 12

        Output:

          

          

            

  • 相关阅读:
    两个 Gadget 小程序
    Microsoft Visual Studio Team System 2008 中的本地负载测试
    Silverlight 2.0细节
    用后台代码创建Storyboard
    DoubleAnimation方法
    Silverlight Random class is not very random
    微软Silverlight移动版本将于年内推出 支持S60
    yahoo也有了Silverlight Developer Center
    微软证实新版Silverlight将具备离线应用功能
    xaml设计实验
  • 原文地址:https://www.cnblogs.com/shaolw/p/InsertSort.html
Copyright © 2020-2023  润新知