初次接触直接插入排序算法,写出一点自己的想法,希望可以帮助到和我一样初学的萌新
附上我觉得很好的一些思路总结
以下为学习直接插入排序后自己写出的第一版代码,希望有大佬能给予优化
?
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int a[10]={2,1,3,4,5,6,7,9,10,8}; //达到升序排列目的
int c=0;
int i,j;
int add=0;
for(j=1;j<10;j++) //用来遍历数组
{
if(a[j]<a[j-1]) //判断是否需要改变位置,即已经遍历的部分是否有序
{
for(i=j;i>=0;i--) //是为已经遍历部分的数据移位做循环
{
if(a[i]<a[i-1]) //再次判断位置是否准确,即为了插入做判断
{
c=a[i]; // 暂时存储数据
a[i]=a[i-1]; // 将大数位置后移
a[i-1]=c;
add++; //判断程序执行次数,帮助理解该程序的时间复杂度
}
}
}
}
for(int i=0;i<10;i++)
{
printf("%d",a[i]); //循环输出有序数组
}
cout<<endl;
printf("%d",add); //输出完成排序程序执行次数
return 0;
}
?
感谢B站 up主 “爱吃豆芽的狐狸”发布的视频,给予很大帮助。
共勉!!
|