zoukankan      html  css  js  c++  java
  • 各种排序总结(一)直接插入排序

    思想:

    插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。

    从i=1开始往后遍历,对于每个数据记录为temp,从该数据向前探索若比temp大则后移,直至第一个比temp小的数据,将temp插入到这个数据之后。

     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 void InsertSort(int* arr,int n)
     6 {
     7     int i,j,temp;
     8     for(i=1;i<n;i++)
     9     {
    10         temp = arr[i];
    11         j = i - 1;
    12         while(j>=0 && temp < arr[j])
    13         {
    14                 arr[j+1] = arr[j];
    15                 j--;
    16         }
    17         arr[j+1] = temp;
    18     }
    19 }
    20 
    21 int main()
    22 {
    23     int * arr;
    24     int n;
    25     cout<<"Input the arr length:"<<endl;
    26     cin>>n;
    27     arr = new int[n];
    28     cout<<"Input the arr elements:"<<endl;
    29     for(int i=0;i<n;i++)
    30     {
    31         cin>>arr[i];
    32     }
    33     InsertSort(arr,n);
    34     cout<<"The outcome:"<<endl;
    35     for(int i=0;i<n;i++)
    36         cout<<arr[i]<<endl;
    37     return 0;
    38 }
    39 
    40 /************
    41 稳定
    42 最好情况:数组正序排列,每次第i个记录一进入内层循环就退出,只有外层的n-1次。
    43           时间复杂度O(n)。
    44 最差情况:数组逆序排列(正好与需要排列的顺序相反),每次第i个记录都要在内层循环中比较i次。
    45           时间复杂度为O(n^2)。
    46 平均情况:O(n^2)。
    47 空间复杂度:一个临时变量O(1)。
    48 插入排序适用于待排序元素较少的情况。如果数组已有序用插入排序也很合适。
    49 **************/
    View Code
  • 相关阅读:
    矢量瓦片切割工具,注意不是切图工具哦
    openlayers模仿google地图--地图版权随鹰眼关闭打开而改变位置
    centos建立本地yum源shell脚本
    python通用序列操作
    awk手册
    linux启动级别简单说明
    win8程序开机自启动管理
    linux系统监控shell脚本
    shell脚本实现源码lamp自动化安装
    python实现冒泡排序
  • 原文地址:https://www.cnblogs.com/CnZyy/p/3314629.html
Copyright © 2011-2022 走看看