可将10个数放入数组,用冒泡排序将其按升序进行排序。
#include
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;
}
#include "stdafx.h"
#include
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< }
cout<}
void main()
{
int a[10]={0},i;
for(i=0;i<10;i++)
{
cout<<"请输入第"< cin>>a[i];
}
cout<<"输入完毕"<
}
楼主,我已经测试过了,你直接复制生成就可以了……
程序有中文引导,我保证你绝对可以看懂,也会用,给分吧……
这个程序的缺点是一定要输入10个数,本来我想改成你输入几个数都可以的程序,但是怕是你的作业,所以就把它限定了……
我想到的是,新建一个同样长度的空数组,然后从输入数组首位扫描到末位,扫描比当前数小的数字个数,如果是0,就将新数组下标0位赋值为这个数。
计数大小恰巧是下标数目。
这个算法应该比2L的快速,但是有个bug:两个数字大小相等的时候就会有问题。如果用可以支持插入的列表结构就没这个问题。
#include
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<cout<
}
#include
using namespace std;
int main()
{ void select_sort(int *p,int n);
int a[10],i;
cout<<"enter the originl array:"<
cin>>a[i];
cout<
cout<<"the sorted array:"<
cout< cout<
}
void select_sort(int *p,int n)
{int i,j,k,t;
for(i=0;i
for(j=i+1;j
t=*(p+k);*(p+k)=*(p+i);*(p+i)=t;
}
}