C语言中把最大的数排到最右边,其余的次序不变怎么编

作者&投稿:和饺 (若有异议请与网页底部的电邮联系)
C语言, 输入一个数组使数组中最大的数放在最后 最小的数放在前面 其他数排列不变???~

你这题难度很大啊,搞了几个小时,终于搞出来了,多加点辛苦分可以吗源程序如下:#include
//将数组中最小数放在最前,最大数放在最后
void PartSort(int *num,int length)
{
int i;
int min,max;
int temp; //找到最大和最小的数的索引
min=0;
max=0;
for(i=1;i<length;i++ )
{
if( num[i]>num[max])
max = i;
if( num[i] < num[min] )
min = i;
}
//将最小的数移到最前
temp = num[min];
for(i=min;i>0;i-- )
{
num[i]=num[i-1];
}
num[0]=temp;
if(min>max)//如果最小数原位置在最大数后面,即最大数被向后移动了
max+=1; //更新最大数索引
//将最大的数移到最后
temp=num[max];
for(i=max;i<length-1;i++ )
{
num[i]=num[i+1];
}
num[length-1]=temp;
return;
}
void main()
{
int i;
int length; //数据元素个数自己定义不超过100
int num[100];
printf( "请输入数组的个数:
");
scanf( "%d", &length);
printf( "请输入%d个整数:
",length);
for (i=0;i<length;i++ )
{
scanf("%d",&num[i]);
}
PartSort(num,length);
printf("排序后的数组为:
" );
for (i=0;i<length;i++)
{
printf("%d ",num[i]);
}
printf("
");
return;
}VC++测试如下:

你先找到了最大值和最小值的位置
然后你为了把最大值移到最后,有移动了一些数的位置,那你想象那会发生什么,不用我多说了把
按照你的思路 你可以先找最大,然后把最大移到最后
在找最小,然后把最小移到最前

int
max=0;int
index=0;
for循环苏组全部判断哪个数最大,最大的数赋值给max,index用来记录在数组的位子,循环外面再把最大的数和最后个替换。
请点满意喔

C语言中把最大的数排到最右边,其余的次序不变怎么编
答:int max=0;int index=0;for循环苏组全部判断哪个数最大,最大的数赋值给max,index用来记录在数组的位子,循环外面再把最大的数和最后个替换。请点满意喔

C语言:输入一个小于100的正整数n,然后输入n个整数存入一维数组中,对...
答:这个程序的写法是比较标准而简单的,先输入一个整数n,然后使用一个循环输入n个整数到一维数组当中,在使用一个简单的排序方法,比方说冒泡排序就可以对数组进行从大到小的排序,最后输出就可以了.include <stdio.h> void bubble_sort(int a[], int n){ int i, j, t;for (i = 0; i < n...

在C语言中,如何输出一组数的排列组合
答:printf("total:%d\n", n);return 0;}该程序的输入为一个任意自然数n,将输出从1到n的全排列。

C语言:冒泡排序法将数组中10个元素从小到大排序,并找出最小值?
答:int a[11],min=0,t;for(int i=0;i<10;i++)scanf("%d",&a[i]);min=a[0];for(int i=0;i<10;i++)if(a[i]<min)//求最小值 min=a[i];for(int i=0;i<10;i++)//冒泡排序 for(int j=0;j<9-i;j++)if(a[j]>a[j+1]){ t=a[j];a[j]=a[j+1];a[j+1...

C语言,输入5个整数求出最大数,从小到大排列,急求!!!
答:void main(){ int i,a[5];printf("请输入5个数:\n");for(i=0;i<5;i++)//用for循环输入5个数,初始化数组 scanf("%d",&a[i]);for(int n=0;n<4;n++)for(int m=n+1;m<5;m++)if(a[n]>a[m])//从小打到排,如果a[m]比最小的还小 { int temp=a[n];// a[n]...

怎样用C语言对一串整行数从大到小排序
答:在冒泡排序中,一次 扫描只能确保最大数值的数移到正确位置,而待排序序列的长度可能只 减少1。快速排序通过一趟扫描,就能确保某个数(以它为基准点吧) 的左边各数都比它小,右边各数都比它大。然后又用同样的方法处理 它左右两边的数,直到基准点的左右只有一个元素为止。它是由 C.A.R.Hoare于1962年提出的。

C语言:输入[1,100]的数,排到5行6列数组中,求其中最大值和最小值,并把...
答:include<stdio.h> void main(){ int a[5][6];int i,j,n,m,l,k;int max=0,min;printf("请输入5行6列数组:\n");for(i=0;i<5;i++)for(j=0;j<6;j++){ scanf("%d",&a[i][j]);if(a[i][j]>max){ max=a[i][j];n=i;m=j;} } min=a[0][0];for(i=0;i<...

在c中如何比较abc三个数的大小呢?
答:1、逻辑比较:该程序首先对a、b和c进行逻辑比较,使用大于(>)操作符来比较两个数的大小。在逻辑比较中,只有两个数进行比较,如果第一个数大于第二个数,表达式返回true,否则返回false。2、条件语句:然后使用if-else语句来确定三个数中的最大值。程序首先检查a是否大于b和c,如果是,那么a就是...

十个数比较大小,用c语言怎么比? 输出最大数和最小数。
答:include <stdio.h>void main(){int i,max,min,n;scanf("%d",&n);max=n;min=n;for(i=1;i<10;i++){scanf("%d",&n);if(max<n) max=n;if(min>n) min=n;}printf("最大数:%d,最小数:%d",max,min);}运行示例:

c语言中冒泡排序的实现原理是什么?
答:冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放...