一,先定义一个结构体来存数组
struct p
{
int k;
};//定义一个p类型的结构体,里面有int型的数据
二,插入排序
1,
2,
- 第一次循环,外循环:取 i=1(第二个数)为temp标记数,标记后让j=i-1;回到第一个数,进行内层循环的比较
[可以理解为temp就是下面while循环的第j+1个数,位置是一样的,也就是后一个数] - 进行while的内循环进行比较:①如果第j个数小于temp,就不要管它(即while循环结束)
②如果第j个数大于temp,就要将第j+1个数换成第j个数,把那个大的往后调。然后 j–,依次往前比较,有比较得到大的数把它往那个数本来的所在位置往后调一位
③while结束后,执行for循环的最后一句,另 第j+1位等于原来记下的temp。意思就是,利用while循环将数从小到大排列后(遇到小的数就依次往前调),将原先那个记下用来比较的数放到最后。
反复循环。
3,源代码
#include <iostream>
using namespace std;
struct p
{
int k;
};
//定义一个p类型的结构体,里面有int型的数据
void insertsort(p r[],int n)
{
for (int i = 1; i < n; i++)
{
p temp;
int j;
temp=r[i];
j=i-1;
while (j>=0&&temp.k<r[j].k)
{
r[j+1]=r[j];
j--;
}
r[j+1]=temp;
}
}
//----------------------------排序完成-----------------------------------
int main()
{
int i;
struct p a[100];
int n;
cin>>n;
for ( i = 0; i < n; i++)
{
cin>>a[i].k;
}
insertsort(a,n);
for (int j = 0; j < n; j++)
{
cout<<a[j].k<<" ";
}
}
最后
以上就是精明御姐最近收集整理的关于数据结构之插入排序的全部内容,更多相关数据结构之插入排序内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复