C++编程:将10个整数按从小到大的顺序排列

C++编程:将10个整数按从小到大的顺序排列
要求:形参为指针变量

可将10个数放入数组,用冒泡排序将其按升序进行排序。

#include <iostream>
using namespace std;

// å†’泡排序长度为len的数组dat(升序)
void sort(int *dat, int len)
{
    int tem;
    for (int i = 0; i < len; i++)
    {
        for (int j = 0; j < len - i - 1; j++) // æ¯”较一次后,则可少比较一个
            if (dat[j] > dat[j+1])  // å¤§æ•°åœ¨å‰é¢ï¼Œåˆ™äº¤æ¢
            {
                tem = dat[j];
                dat[j] = dat[j+1];
                dat[j+1] = tem;
            }
    }
}

void output(int *dat, int len) // è¾“出数据
{
    for (int i = 0; i < len; i++)
        cout << ' ' << dat[i];
    cout << endl;
}

int main()
{
    int a[] = {9, 8, 3, 5, 7, 1, 6, 4, 0, 2};
    sort(a, 10);
    output(a, 10);
    return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-11
#include "stdafx.h"
#include <iostream>
using namespace std;
void k(int *a)
{
int j,i,t;
for(j=0;j<9;j++)
{
for(i=j+1;i<10;i++)
if(a[j]>a[i])
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
cout<<a[j]<<" ";
}
cout<<a[j];
}
void main()
{
int a[10]={0},i;
for(i=0;i<10;i++)
{
cout<<"请输入第"<<i+1<<"个数"<<endl;
cin>>a[i];
}
cout<<"输入完毕"<<endl<<"改变后结果为";
k(a);
}
楼主,我已经测试过了,你直接复制生成就可以了……
程序有中文引导,我保证你绝对可以看懂,也会用,给分吧……
这个程序的缺点是一定要输入10个数,本来我想改成你输入几个数都可以的程序,但是怕是你的作业,所以就把它限定了……本回答被提问者采纳
第2个回答  2010-05-12
我想到的是,新建一个同样长度的空数组,然后从输入数组首位扫描到末位,扫描比当前数小的数字个数,如果是0,就将新数组下标0位赋值为这个数。
计数大小恰巧是下标数目。
这个算法应该比2L的快速,但是有个bug:两个数字大小相等的时候就会有问题。如果用可以支持插入的列表结构就没这个问题。
第3个回答  2018-08-02
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[11],i;
for(i=1; i<=10; ++i)
cin>>a[i];
sort(a+1,a+11);
for(i=1; i<=10; ++i)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
第4个回答  2010-05-12
#include <iostream>
using namespace std;
int main()
{ void select_sort(int *p,int n);
int a[10],i;
cout<<"enter the originl array:"<<endl;
for(i=0;i<10;i++)
cin>>a[i];
cout<<endl;
select_sort(a,10);
cout<<"the sorted array:"<<endl;
for(i=0;i<10;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
void select_sort(int *p,int n)
{int i,j,k,t;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(*(p+j)<*(p+k)) k=j;
t=*(p+k);*(p+k)=*(p+i);*(p+i)=t;
}
}

参考资料:已通过编译测试

相似回答