#include <iostream>
using namespace std;
void InsertSort(int a[], int n)
{
for (int i = 1; i<n; i++) {
if (a[i] < a[i - 1]) { //若第i个元素大于i-1元素,直接插入。小于的话,移动有序表后插入
int j = i - 1;
int x = a[i]; //复制为哨兵,即存储待排序元素
a[i] = a[i - 1]; //先后移一个元素
while (x < a[j]) { //查找在有序表的插入位置
a[j + 1] = a[j];
j--; //元素后移
}
a[j + 1] = x; //插入到正确位置
}
}
}
int main() {
int a[10];
cout << "请输入10个整数:";
for (int k = 0; k < 10; k++)
cin >> a[k];
InsertSort(a, 10);
cout << "排序后整数序列:";
for (int j = 9; j>=0; j--) {
cout << a[j] << " ";
}
cout << endl;
system("pause");
return 0;
}
#include <stdio.h>
int shsort(int s[], int n) /* 自定义函数 shsort()*/
{
int i,j,d;
d=n/2; /*确定固定增虽值*/
while(d>=1)
{
for(i=d+1;i<=n;i++) /*数组下标从d+1开始进行直接插入排序*/
{
s[0]=s[i]; /*设置监视哨*/
j=i-d; /*确定要进行比较的元素的最右边位置*/
while((j>0)&&(s[0]<s[j]))
{
s[j+d]=s[j]; /*数据右移*/
j=j-d; /*向左移d个位置V*/
}
s[j + d]=s[0]; /*在确定的位罝插入s[i]*/
}
d = d/2; /*增里变为原来的一半*/
}
return 0;
}
int main()
{
int a[11],i; /*定义数组及变量为基本整型*/
printf("请输入 10 个数据");
for(i=1;i<=10;i++)
scanf("%d",&a[i]); /*从键盘中输入10个数据*/
shsort(a, 10); /* 调用 shsort()函数*/
printf("排序后的顺序是");
for(i=1;i<=10;i++)
printf("%d ",a[i]); /*输出排序后的数组*/
return 0;
}
// 5 6 7 8 9 1 2 3 4 10
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m