电脑

当前位置 /首页/游戏数码/电脑/列表

如何理解排序算法:[1]直接插入排序法

直接插入排序算法是排序算法中最简单的,但在寻找插入位置时的效率不高。基本思想就是将一个待排序的数字在已经排序的序列中寻找找到一个插入位置进行插入。直接插入排序的算法重点在于寻找插入位置。

操作方法

(01)设定待排序的数据保存在数组data[]中

如何理解排序算法:[1]直接插入排序法

(02)设置外层循环,即从第二个数据到最后一个数据。(只有一个数据则为考虑为已经是有序的,所以循环从第二个数据开始)其中n为待排序数据的长度。

如何理解排序算法:[1]直接插入排序法 第2张

(03)定义一个用来临时保存将要进行插入操作的元素temp。

如何理解排序算法:[1]直接插入排序法 第3张

(04)编写内层循环,寻找插入位置并移动元素。

如何理解排序算法:[1]直接插入排序法 第4张

(05)将tmp插入到寻找到的位置j+1

如何理解排序算法:[1]直接插入排序法 第5张

(06)最后附上全部运行代码及运行截图#include "stdafx.h"#include <iostream>using namespace std;template <class T>void outputArr(T&,int);int main(){int i, j;int data[] = { 23, 98, 7, 28, 92, 14, 89, 1 };//共8个数据int n = sizeof(data) / sizeof(data[0]);cout << "排序前的结果:n";outputArr(data, n);for ( i = 1; i < n;i++){int temp = data[i];for ( j = i - 1; j >= 0 && data[j]>temp;j--){data[j + 1] = data[j];}data[j + 1] = temp;}cout << "排序后的结果:n";outputArr(data, n);return 0;}template <class T>void outputArr(T &a,int n){for (int i = 0; i < n;i++){cout << a[i] << " ";}cout << endl;}

如何理解排序算法:[1]直接插入排序法 第6张

(07)可以通过引入哨兵来将算法改进,避免了边界检查。即将数组的第一个位置替换上面的temp临时变量。

如何理解排序算法:[1]直接插入排序法 第7张
TAG标签:插入排序 算法 #