可以输入任意值,值与值是之间用空格隔开的,比如我输入2 40 87 90,
然后用选择排序运行出大小排序。
应该还可以,这是十个的排序,小菜鸟献上
#include "stdafx.h"
int main()
{int a[10],b,i,e=0,c;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(c=0,b=9;b>=0;b--,c++)
{
for(i=0;i<10-c;i++)
if(a[b]<=a[i])
{
e=a[i];
a[i]=a[b];
a[b]=e;
}
}
for(i=0;i<10;i++)
printf("%d\n",a[i]);
}
#include<stdio.h>
#define N 4
void SelectionSort(int *num,int n)
{
int i = 0;
int min = 0;
int j = 0;
int tmp = 0;
for(i = 0;i < n-1;i++)
{
min = i;//每次讲min置成无序组起始位置元素下标
for(j = i;j < n;j++)//遍历无序组,找到最小元素。
{
if(num[min]>num[j])
{
min = j;
}
}
if(min != i)//如果最小元素不是无序组起始位置元素,则与起始元素交换位置
{
tmp = num[min];
num[min] = num[i];
num[i] = tmp;
}
}
}
int main()
{
int num[N] = {2, 40, 87, 90};
int i = 0;
SelectionSort(num,N);//这里需要将数列元素个数传入。有心者可用sizeof在函数内求得元素个数。
for(i = 0;i < N;i++)
{
printf("%d ",num[i]);
}
return 0;
}
个人感觉你问的是输入的空格怎么处理识别。 如果感觉没有错, 你可以创建一个字符型数组,然后判断是否遇到了空格,空格与空格之间的字符组合成数据(当然字符串最后是/0结尾的),再排序。
如果用scanf来接收的话,字符串中不能含有空格,否则将以空格作为串的结束符。如果你键入得是harry potter 那么实际上scanf只能获取harry这个单词。所以要接收空格的话可以用gets()这个函数。(http://blog.csdn.net/leichelle/article/details/8117018)
#include "stdio.h"
int main()
{
int a[10],b,i,e=0,c;
for(i=0;i scanf("%d",&a[i]);
for(c=0,b=9;b>=0;b--,c++) {
for(i=0;i<10-c;i++)
if(a[b]<=a[i])
{ e=a[i]; a[i]=a[b]; a[b]=e; }
} for(i=0;i<10;i++)
printf("%d\n",a[i]); }
本人菜鸟一个,觉得传参时怎么能把num(指的是数组的首地址)传给一个指针int *num
不知道对不对,原理是对的,跟冒泡相反。
#include
int main()
{
int a[5]={1,2,3,6,5};
int i,j,ch;
for(i=0;i {
for(j=i+1;j {
ch=a[i];
if(a[i]>a[j])
{
a[i]=a[j];
a[j]=ch;
}
}
}
for(i=0;i<5;i++)
printf("%d\n",a[i]);
return 0;
}