直接插入排序的简单介绍

2023-07-30 14:51:15 观察游戏 观察猫

1-数据结构问题,直接插入排序

直接插入排序的思想就是把数据元素逐一插入到已经排列好的数列当中,所以在这里会用到一个临时变量(或者说数组当中的一个位置)来存放排序当中的最大值或者最小值,在程序当中用第一个位置,也就是a[0]来存放。

直接插入插排的基本原理是这样的:当插入第i个时,前面的V[0],V[1],……,V[i-1]已经排好序。这时,用V[i]与V[i-1],V[i-2],…顺序进行比较,找到插入位置即将V[i]插入,原来位置上的元素向后移动即可。

直接插入排序(straight insertion sort)的做法是:每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。

2-直接插入排序中,上述代码for(i=1...为什么不是i=0?下标不是从0开始...

对于*(p+i+1)的下标就是(p+n-1),这同样也导致了下标越界;但是即便解决了这两个问题,程序算法仍然是有问题的。从题意上说,应该写两个函数,一个是排序函数sort,一个是插入函数inert。

for(i=1;i=L.length;++i)coutL.BK[i].sum_priceendl;排序是对的,输出语句错了。L.BK[0]不是数据只是一个空白只提供排序使用,数据从L.BK[1]到L.BK[L.length];第一行为排序前,第二行为排序后。

for(int j=i-1;j=0;j--)if(a[i]a[j]) //这里 a[j+1]=a[j];else break;在移动的时候,已经改变了a[i]的值,这是再比较已经不是原始的a[i]在比了。修改就是把a[i]改成k就好。

先逐个筛选数组中的每个元素。再比较每相邻的两个元素。根据比较结果进行元素的交换,以实现排序。如果要从终端输入数组,就加一个输入函数。最后,如果是从小到大排序,基本逻辑也是一样的。

3-27.给出序列{83,16,9,96,27,75,42,69,34}的直接插入排序的全过程?

1、完成这个工作的步骤:①确定数据“8”在原有序列中应该占有的位置序号。数据“8”所处的位置应满足小于或等于该位置右边所有的数据,大于其左边位置上所有的数据。②将这个位置空出来,将数据“8”插进去。

2、直接插入排序的思想就是把数据元素逐一插入到已经排列好的数列当中,所以在这里会用到一个临时变量(或者说数组当中的一个位置)来存放排序当中的最大值或者最小值,在程序当中用第一个位置,也就是a[0]来存放。

3、…,V[i-1]已经排好序。这时,用V[i]与V[i-1],V[i-2],…顺序进行比较,找到插入位置即将V[i]插入,原来位置上的元素向后移动即可。

4、由于希尔排序是先将整个序列划分为多个子序列进行排序,相同的元素顺序在这个过程中顺序可能会被打乱,所以希尔排序是不稳定排序。从待排序的数据元素中,选出最小或最大的元素与序列第一个数交换。直到所有数据排完。

5、由于程序比较简单,所以没有加什么注释。所有的程序都给出了完整的运行代码,并在我的VC环境 下运行通过。因为没有涉及MFC和WINDOWS的内容,所以在BORLAND C++的平台上应该也不会有什么 问题的。

4-在对n个元素进行直接插入排序的过程中,共需要进行___趟。

1、第3题应该选择C,原因链队列插入只在尾部插入,只修改队尾指针即可,故只修改r。第1题应该是O(n/2),也可说是O(n),答案D如果是O(n/2),应该选D,如果D是O(n^2),则不该选D,而应该选C。

2、在直接插入排序过程中,对其中一个记录的插入排序称为一次排序;直接插入排序是从第二个记录开始进行的,因此,长度为n的记录序列需要进行n-1次排序才能完成整个序列的排序。时间复杂度为O(n2)。

3、如果目标是把n个元素的序列升序排列,那么采用插入排序存在最好情况和最坏情况。最好情况就是,序列已经是升序排列了,在这种情况下,需要进行的比较操作需(n-1)次即可。

4、n-1次比较,对a[1,n]的排序,将a[2]~a[n]依次比较,由于已经有序,所以每个元素只需要比较一次,然后插入在第1,..n-1的后边。

5、易知上述排序当i=1时实际上为空操作,故可直接从i=2开始。例8-1应用直接插入排序算法,对图8-1所示的一组键值进行排序。过程如图。

6、插入排序(Insertion Sort) 基本思想:每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当位置,使数列依然有序;直到待排序数据元素全部插入完为止。

5-直接插入排序的方法是

1、直接插入排序:最基本的插入排序,将第i个插入到前i-1个中的适当位置。折半插入排序:因为是已经确定了前部分是有序序列,所以在查找插入位置的时候可以用折半查找的方法进行查找,提高效率。

2、直接插入插排的基本原理是这样的:当插入第i个时,前面的V[0],V[1],……,V[i-1]已经排好序。这时,用V[i]与V[i-1],V[i-2],…顺序进行比较,找到插入位置即将V[i]插入,原来位置上的元素向后移动即可。

3、直接插入排序的思想就是把数据元素逐一插入到已经排列好的数列当中,所以在这里会用到一个临时变量(或者说数组当中的一个位置)来存放排序当中的最大值或者最小值,在程序当中用第一个位置,也就是a[0]来存放。

4、包括:直接插入排序,二分插入排序(又称折半插入排序),链表插入排序,希尔排序(又称缩小增量排序)。属于稳定排序的一种(通俗地讲,就是两个相等的数不会交换位置) 。

5、排序技术:1交换类排序法 2差入排序法 3选择类排序法。1交换类排序法:借助数据元素之间的互相交换进行排序的一种方法。2插入排序法:将无序序列中的各元素依次插入到已经有序的线性表中。3暂无。

发表评论:

标签列表
请先 登录 再评论,若不是会员请先 注册