艾特商业网

直接插入排序原理视频讲解(直接插入排序)

更新时间:2023-11-22 11:40:17

导读 你们好,最近小艾特发现有诸多的小伙伴们对于直接插入排序原理视频讲解,直接插入排序这个问题都颇为感兴趣的,今天小活为大家梳理了下,一

你们好,最近小艾特发现有诸多的小伙伴们对于直接插入排序原理视频讲解,直接插入排序这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。

1、设定待排序的数据保存在数组data[]中

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

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

4、编写内层循环,寻找插入位置并移动元素。

5、将tmp插入到寻找到的位置j+1

6、最后附上全部运行代码及运行截图

7、#include "stdafx.h"

8、#include <iostream>

9、using namespace std;

10、template <class T>

11、void outputArr(T&,int);

12、int main()

13、{

14、 int i, j;

15、 int data[] = { 23, 98, 7, 28, 92, 14, 89, 1 };//共8个数据

16、 int n = sizeof(data) / sizeof(data[0]);

17、

18、 cout << "排序前的结果:\n";

19、 outputArr(data, n);

20、 for ( i = 1; i < n;i++)

21、 {

22、 int temp = data[i];

23、 for ( j = i - 1; j >= 0 && data[j]>temp;j--)

24、 {

25、 data[j + 1] = data[j];

26、 }

27、 data[j + 1] = temp;

28、 }

29、 cout << "排序后的结果:\n";

30、 outputArr(data, n);

31、 return 0;

32、}

33、template <class T>

34、void outputArr(T &a,int n)

35、{

36、 for (int i = 0; i < n;i++)

37、 {

38、 cout << a[i] << " ";

39、 }

40、 cout << endl;

41、}

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

以上就是直接插入排序这篇文章的一些介绍,希望对大家有所帮助。

免责声明:本文由用户上传,如有侵权请联系删除!