Ⅰ 求c语言将数组元素大小排序!!
C语言将数组元素大小排序方法:
以下使用的是冒泡排序法实线数组从小到大排序。
思想:每次相邻两个数比较,若升序,则将大的数放到后面,一次循环过后,就会将最大的数放在最后。
10、2、3、4、5、6、9、8、7、1是输入的待排序的数列,经过第一次排序,将最大的,10放在最后,第二次排序,将剩下的2、3、4、5、6、9、8、7、1进行冒泡,将当前最大的9放在倒数第二的位置,以此类推。
以下是具体代码:
#include <stdio.h>
int main(){
int nums[10] = {10, 2, 3, 4, 5, 6, 9, 8, 7, 1};
int i, j, temp, isSorted;
//优化算法:最多进行 n-1 轮比较
for(i=0; i<10-1; i++){
isSorted = 1; //假设剩下的元素已经排序好了
for(j=0; j<10-1-i; j++){
if(nums[j] > nums[j+1]){
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
isSorted = 0; //一旦需要交换数组元素,就说明剩下的元素没有排序好
}
}
if(isSorted) break; //如果没有发生交换,说明剩下的元素已经排序好了
}
for(i=0; i<10; i++){
printf("%d ", nums[i]);
}
printf(" ");
return 0;
}
(1)c语言s在某范围内从小到大排序扩展阅读:
其他将数组从小到大排序的算法
以下使用的是选择排序法实现数组从小到大排序。
思想:从第一个数开始,每次和后面剩余的数进行比较,若升序,则如果后边的数比当前数字小,进行交换,和后面的所有的数比较、交换后,就会将当前的最小值放在当前的位置
输入的序列为10、2、3、4、5、6、9、8、7、1进行一次排序后将最小的数放在了第一位(a[0]与它后面的所有数进行比较,若a[0]比后面的数大,进行交换),以此类推。
以下是具体代码:
#include <stdio.h>
int main(void){
int a[1001];
int n,i,j,t;
scanf("%d",&n);//n为要排序的数的个数
//输入需要排序的数
for(i=0;i<n;++i)
scanf("%d",a+i);
//接下来进行排序
for(i=0;i<n-1;++i)//因为每次需要和a[i]后面的数进行比较,所以到a[n-2](倒数第2个元素)就行
{
for(j=i+1;j<n;++j)//j从i后一个开始,a[i]与a[j]进行比较
{
if(a[i]>a[j])//a[i]为当前值,若是比后面的a[j]大,进行交换
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}//每排序一次,就会将a[i](包括a[i])之后的最小值放在a[i]的位置
for(j=0;j<n;++j)
printf("%-5d",a[j]);
printf(" ");
}
return 0;
}
Ⅱ 在C语言中 编写一个程序实现从小到大排序
#include<stdio.h>
#include<stdlib.h>
intcmp(constvoid*a,constvoid*b)
{
return*(int*)a-*(int*)b;
}
intmain(intargc,char**argv)
{
inta[]={1,-2,53,49,144,65,267,98,112};
inti;
qsort(a,sizeof(a)/sizeof(int),sizeof(int),cmp);
for(i=0;i<sizeof(a)/sizeof(int);++i)
printf("%d",a[i]);
printf(" ");
return0;
}
如果要自己实现排序函数的话
#include<stdio.h>
voidqsort(int*a,intleft,intright)
{
intp=(left+right)/2;//以中间数作为主元
intk=a[p];
inti=left,j=right;
while(i<j)
{
//从左边开始将大于主元的数放在主元右边
while((i<=p)&&(a[i]<=k))
++i;
if(i<p)
{
a[p]=a[i];
p=i;
}
//从右边开始将小于主元的数放在左边
while((j>=p)&&(a[j]>=k))
--j;
if(j>p)
{
a[p]=a[j];
p=j;
}
}
a[p]=k;
//如果左边的数大于1个则递归左边
if(p-left>1)
qsort(a,left,p-1);
//如果右边的数大于1个则递归右边
if(right-p>1)
qsort(a,p+1,right);
}
intmain(intargc,char**argv)
{
inta[]={1,-2,53,49,144,65,267,98,112};
inti;
qsort(a,0,sizeof(a)/sizeof(int)-1);
for(i=0;i<sizeof(a)/sizeof(int);++i)
printf("%d",a[i]);
printf(" ");
return0;
}
Ⅲ C语言:对输入的十个数进行从小到大排序
1、首先打开编辑软件,新建一个c程序空文件,引入标准库和主函数,定义一个QuickSort函数用来排序,下面首先编写排序函数的:
Ⅳ C语言:用选择排序法对一个数组里的数进行排序,从小到大,要求选出小的进行排序
#include<stdio.h>
intmain()
{
inti=0;
inta[10]={0,5,2,3,6,9,8,7,4,1};
intj=0;
inttmp=0;
intm=sizeof(a)/sizeof(a[0]);//s数组大小
for(i=0;i<m-1;i++)//比较m-1次
{
for(j=0;j<m-i-1;j++)//最后一次比较a[m-i-1]与a[m-i-2]
{
if(a[j]>a[j+1])//如果a[j]比a[j+1]大则交换内容
{
tmp=a[j+1];
a[j+1]=a[j];
a[j]=tmp;
}
}
}
for(i=0;i<m;i++)
{
printf("%d",a[i]);//打印
}
printf(" ");
return0;
}
(4)c语言s在某范围内从小到大排序扩展阅读
C语言排序法
把一个数组进行排序可以使用选择排序法。选择排序法的原理在是每一趟循环寻找数组中最小的数的下标,然后按照递增的顺序放入数组中。
循环找出最小数的下标,该下标用min保存,直到比较完整个数组,即可找到最小的数,然后将该数放入数组的第一位,这样就排好了一个元素。
需要再嵌套一层外层循环即可排好所有元素。第二次循环就不用再比较第一个元素了,因为第一个元素已经排好,依次类推,每一次循环就会排好一个,进行n-1次循环即可排好所有元素。
Ⅳ C语言程序从小到大排序要怎么写啊
冒泡排序法: /*#include<iostream.h> void main() { int a[10],temp,i,j; for(i=0;i<=9;i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } for(i=0;i<=8;i++)//9+8+'''+1=45次 for(j=0;j<=8-i;j++) { if(a[j]<a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } for(i=0;i<=9;i++) cout<<a[i]<<'\n'; }*/ //选择排序法 /*#include<iostream.h> void main() { int a[10],temp,i,j; for(i=0;i<=9;i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } for(i=0;i<=8;i++)// for(j=i+1;j<=9;j++) { if(a[i]<a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } } for(i=0;i<=9;i++) cout<<a[i]<<'\n'; }*/ // 进行插入排序算法 #include<iostream.h> void main() { int a[10],i,j,n=10,index,inserter; for(j=0;j<=9;j++) { cout<<"a["<<j<<"]="; cin>>a[j]; } for(i=1;i<n;i++) { inserter=a[i]; index=i-1; while(index>=0&&inserter<a[index]) { a[index+1]=a[index]; index--; } a[index+1]=inserter; } for(j=0;j<=9;j++) cout<<a[j]<<'\n'; }
Ⅵ c语言将数组从小到大排序
#include<stdio.h>
intmain()
{
inta[20];
inti,j,temp;
int*p=&a[0];
int*d;
intn;
printf("请输入数组长度");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("请输入这个数组 ");
scanf("%d",p++);//<=================
}
for(p=a;p<a+n;p++)//<=================
{
for(d=p+1;d<a+n;d++)//<=================
{
if(*p>*d)
{
temp=*p;
*p=*d;
*d=temp;
}
}
}
p=a;
for(p;p<a+n;p++)
{
printf("%d ",*p);
}
return0;
}
Ⅶ C语言~十个数字从小到大怎么排列~从大到小呢~
//要求任意输入10个数,然后按从小到大顺序输出
#include <stdio.h>
int main()
{
int a[10];
int i,j;
int temp;
printf("请输入10个整数:");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
printf("排列后顺序为:");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("
");
return 0;
}
Ⅷ 用C语言编程,将字符串s中的所有字符按ASCII值从小到大重新排序后,将排序后的字符串输出
代码如下:
#include<stdio.h>
#include<string.h>
intmain()
{
charstr[]="HelloWorld!",ch;
inti,j,len;
len=strlen(str);
for(i=0;i<len-1;i++){
for(j=i+1;j<len;j++){
if(str[i]>str[j]){
ch=str[i];
str[i]=str[j];
str[j]=ch;
}
}
}
printf("%s ",str);
return0;
}
运行结果:
Ⅸ C语言中输入一串字符,怎样让它按照字母从小到大的顺序排列
这可以把字符串输入到字符数组中,然后采用排序的方法来实现:
(需要包含<string.h>头文件)
char t,s[200];
int i,i;
gets(s);
for(i=0;i<strlen(s)-1;i++)
for(j=0;j<strlen(s)-1-i;j++)
if(s[j]>s[j+1])
{t=s[j]; s[j]=s[j+1]; s[j+1]=t;}
puts(s);