码迷,mamicode.com
首页 > 编程语言 > 详细

插入排序

时间:2020-02-10 22:23:51      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:技术   mda   时间   下标   流程   item   back   std   using   

  插入排序(Insertion sort)是一种简单直观且稳定的排序算法。如果有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,算法适用于少量数据的排序,时间复杂度O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。

  插入排序基本思想:每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。

 

 

算法流程:

①将第一个数默认有序,从第二个数开始往前进行扫描。

②如果该元素大于前面的元素,则从这个数往前是有序序列,不需进行任何操作,并移向下一个元素往前进行扫描。

③如果当前元素小于前面的元素,那么便将该元放置到第一个大于该元素的前面(两者相邻)。

 

④重复操作,直到遍历结束。

 

技术图片

 

 

 

 1 #include <iostream>
 2 using namespace std;
 3 int main(){
 4     int a[] = {5,4,3,2,1};
 5     for(int i  = 1; i < 5; i ++){
 6         int temp = a[i];          //声明临时变量保存该待比较的值 
 7         int j = i - 1;            //j保存下标变化 
 8         while(j >= 0 && a[j] > temp){
 9             a[j + 1] = a[j];
10             j--;
11         }
12         a[j + 1] = temp;    //到达目标处,将该处的值变为之前保存的临时变量的值 
13     }
14     for(int i = 0; i < 5; i ++){
15         cout << a[i] <<  ;
16     }
17     return 0;
18 }

 

插入排序

标签:技术   mda   时间   下标   流程   item   back   std   using   

原文地址:https://www.cnblogs.com/pureayu/p/12292894.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!