• 插入排序


    一.直接插入排序( straight insertion sort )是一种最简单的排序方法。
    它的基本操作是将一个记录插入到一个长度为 m (假设)的有序表中,使之仍保持有序,从而得到一个新的长度为 m + 1 的有序表。


     

    此算法外循环 n-1 次,在一般情况下内循环平均比较次数的数量级为O(n) ,所以算法总时间复杂度为O(n2) 。

    插入排序的过程中,比较的过程就是一个查找的过程,为了更加快速的找到“合适的位置”,可以使用高效些的查找算法,例如和折半查找结合,就形成了  折半插入排序。

     



    #include<stdio.h> void insertionsort(int a[],int n) { int i,j,key; for(i=1;i<n;i++){ key=a[i]; for(j=i-1;a[j]>key;j--) a[j+1]=a[j]; a[j+1]=key; } } int main() { int i,n; int a[100]; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); insertionsort(a,n); for(i=0;i<n;i++) printf("%d ",a[i]); }
    #include <iostream>
    using namespace std;
    const int n=10 ;
    int main( )
    {
    void f(int a[],int n ) ;
    int a[n] ={  42,65,80,74,36,44,28,65,94,72 } ;
        f(a,n) ;
      for(int i=0; i<n; i++) 
      cout<<a[i]<<" "   ;
      cout<<endl ;    
    }
     
    void f(int a[],int n)
    {
        int i,j,x ;
        for(i=1;i<n ;i++)
        {
            x=a[i] ;
            for(j=i-1;j>=0;j--)
            if(x<a[j]) 
                 a[j+1]=a[j] ;
              else   break   ;
              a[j+1]=x       ;    
        }
    }
    #include<stdio.h>
    #define M 100
    int R[M];
    
    void insertSort(int n)
    {
        int i,j;
        for (i=1;i<n;i++)
       { 
        if(R[i]<R[i-1]) 
        {
               R[0]=R[i]; 
          for(j=i-1;R[j]>R[0];j--) 
                              R[j+1]=R[j]; 
          R[j+1]=R[0]; 
         } 
    
      } 
    }
    int main()
    {
        int i,n;
           scanf("%d",&n);
        for (i=1;i<=n;i++)
            scanf("%d",&R[i]);
        
        printf("before sort numbers 
    ");
          for (i=1;i<=n;i++)
              printf("%4d",R[i]);
        
        insertSort(n);/*调用直接插入了排序*/
        printf("
     after sort numbers 
    ");
        for (i=1;i<=n;i++)
            printf("%4d",R[i]);
    }
  • 相关阅读:
    获取当前日期的年、月、日
    去掉后端返回过来的 % 且保留 2 位小数
    uni-app 长按复制
    rabbit——部署备份
    Mysql——查询语句备份
    Redis——常用命令
    luajit——编译运行lua
    Mac——无法退出移动硬盘解决办法
    Java——Function接口的使用
    Java——在运行mvn install或mvn package时跳过Test
  • 原文地址:https://www.cnblogs.com/wangprince2017/p/7654521.html
Copyright © 2020-2023  润新知