zoukankan      html  css  js  c++  java
  • 排序算法插入排序

    插入排序原理:将第i个元素与前i-1个元素从右向左开始比较,若第i个元素小,则将前面的元素向后移,直到找到可以插入的位置。

    插入排序
     1 #include <iostream>
    2 using namespace std;
    3
    4
    5 //元素交换
    6 void swap(int &a,int &b)
    7 {
    8 int temp=a;
    9 a=b;
    10 b=temp;
    11 }
    12
    13 /*///////////////////////////////////////////////
    14 插入排序
    15 */
    16 void InsertSort(int *a,int len)
    17 {
    18 int i,j,key;
    19 for(i=1;i<len;i++)
    20 {
    21 key=a[i]; //保存a[i]的值,因为后面要修改它的值
    22 j=i-1;
    23 while(j>=0 && a[j]>key )
    24 {
    25 if(a[j]>key)
    26 {
    27 a[j+1]=a[j];
    28 j--;
    29 }
    30 }
    31 a[j+1]=key;
    32 }
    33 for(i=0;i<len;i++)
    34 cout<<a[i]<<" ";
    35 cout<<endl;
    36 }
    37 /////////////////////////////////////////////////
    38
    39
    40
    41
    42 int main()
    43 {
    44 int n,i,a[20];
    45 cout<<"请输入数组元素n:"<<endl;
    46 cin>>n;
    47 cout<<"请输入"<<n<<"个元素:"<<endl;
    48 for(i=0;i<n;i++)
    49 cin>>a[i];
    50 InsertSort(a,n);
    51 return 0;
    52 }

    比较次数为1+2+3+...+n=(1+n)*n/2,因此时间复杂度也是O(n^2)

  • 相关阅读:
    Windows下使用nmake编译C/C++的makefile
    poj 1228
    poj 1039
    poj 1410
    poj 3304
    poj 1113
    poj 2074
    uva 1423 LA 4255
    poj 1584
    poj 3277
  • 原文地址:https://www.cnblogs.com/chenbin7/p/2197920.html
Copyright © 2011-2022 走看看