• 关于插入排序的实现


    插入排序是排序算法中一个常见的算法,个人觉得插入排序和冒泡排序有很大的相同之处。先看两段代码:

    1、来自http://www.cnblogs.com/xkfz007/archive/2012/07/01/2572017.html

    void insert_sort(int a[],int n)
    {
        _FUNC;
        for(int i=1;i<n;i++) {
            int t=a[i];
            int j;
            for(j=i-1;j>=0&&a[j]>t;j--) {
                    a[j+1]=a[j];
            }
            a[j+1]=t;
            print(a,n);
        }
    }

    2、来源已经忘了

    #include <stdio.h>
    #include <stdlib.h>
    #include <iostream>
    
    void swap(int *p1, int *p2)
    {
          int temp;
          temp=*p1;
          *p1=*p2;
          *p2=temp;
    }
    
    void insertSort(int *a,int len)
    {
          int i,j;
          for(i=0;i<len-1;i++)
          {
              for(j=i+1;j>=1;j--)
              {
                  if(a[j]<a[j-1])
                       swap(&a[j],&a[j-1]);
              }
          }
    }
    
    int main()
    {
        const int LEN=10;
        int a[LEN]={1,45,41,71,19,15,12,10,21,45};
        insertSort(a,LEN);
        for(int i:a){
            std::cout<< i << "   ";
        }
        std::cout<<std::endl;
    }

    第一段和第二段代码的思想差不多,都是不断的将后一个元素加入到前面已经排序好的数值中。其实说来,第二段代码还是比较清楚的,和冒泡排序比较像似。冒泡排序是下往上交换,而插入排序是每次把下一个元素泡到已经排好的序列当中。

  • 相关阅读:
    求一个数的阶乘在 m 进制下末尾 0 的个数
    区间dp
    最长公共子序列变形
    学习stm32专区
    C/C++中static关键字详解
    ASP.NET调用Office Com组件权限设置
    TreeView控件
    SQL笔记(1)索引/触发器
    NPOI 1.2.5 教程
    SQL Povit
  • 原文地址:https://www.cnblogs.com/lishuai0214/p/4321953.html
Copyright © 2020-2023  润新知