写一个函数用选择法将n个整数由大到小排序,主函数通过键盘输入10个整数,然后 通过函数调用实现排序。

 

#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