标签:技术 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