您的位置:首页 > 编程语言 > C语言/C++

直接插入排序

2016-06-13 13:33 281 查看
#include<stdio.h>
#include<iostream>
#include<algorithm>

using namespace std;

int main()
{
int a[11],num;
for(int i = 0; i < 10; i ++)
scanf("%d",&a[i]);
sort(a,a + 10); ///已经存在的序列是排序好的

scanf("%d",&num);

int k,t,s;
if(num > a[9])
a[10] = num;
else
{
for(int i = 0;i < 10;i ++)
if(a[i] > num)
{
k = i;
break;
}
for(int i = k;i < 11;i ++)
{
t = a[k];
a[k] = num;
for(int j = i + 1;j < 11;j ++)
{
s = a[j];
a[j] = t;
t = s;
}
break;
}
}

for(int i = 0; i < 11; i ++)
cout << a[i] << " ";
cout << endl;

return 0;
}


第二种代码

#include<iostream>
using namespace std;

void InsertSort(int a[],int k)
{
int j;
for(int i = 1;i < k;i ++)//循环从第2个元素开始
{
//如果当前元素小于之前的元素,则进行交换
if(a[i] < a[i - 1])
{
int temp = a[i];
//一直往前遍历,直到前面的元素比a[i]还要小或者到达边界则终止
for(j = i - 1;j >= 0 && a[j] > temp;j --)
{
a[j + 1] = a[j];
}
a[j + 1] = temp;//此处就是a[j+1]=temp;
}
}
}

int main()
{
int a[]={98,76,109,34,67,190,80,12,14,89,1};
//获得数组的长度
int k=sizeof(a)/sizeof(a[0]);

InsertSort(a,k);

for(int i = 0;i < k;i ++)
cout << a[i] << "  ";
cout << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ c语言