Ⅰ 如何用c語言將一組數進行降序排列
假設有n個數。
#include<stdio.h>
void min(int *a,int *b)
{
int data;
if(*a<*b)
{
data=*a;
*a=*b;
*b=data;
}
}
int main()
{
int t[10];//假設n=10,可以設置為其他數
int i,j,n=10;
for(i=0;i<n;i++)
scanf("%d",&t[i]);
for(i=0;i<n-1;i++)
{
for(j=i;j<n-1;j++)
{
min(&t[j],&t[j+1]);
}
}
for(i=0;i<n;i++)
printf("%3d",t[i]);
printf("\n");
return 0;
}
Ⅱ c語言中排序方法
1、冒泡排序(最常用)
冒泡排序是最簡單的排序方法:原理是:從左到右,相鄰元素進行比較。每次比較一輪,就會找到序列中最大的一個或最小的一個。這個數就會從序列的最右邊冒出來。(注意每一輪都是從a[0]開始比較的)
以從小到大排序為例,第一輪比較後,所有數中最大的那個數就會浮到最右邊;第二輪比較後,所有數中第二大的那個數就會浮到倒數第二個位置……就這樣一輪一輪地比較,最後實現從小到大排序。
2、雞尾酒排序
雞尾酒排序又稱雙向冒泡排序、雞尾酒攪拌排序、攪拌排序、漣漪排序、來回排序或快樂小時排序, 是冒泡排序的一種變形。該演算法與冒泡排序的不同處在於排序時是以雙向在序列中進行排序。
原理:數組中的數字本是無規律的排放,先找到最小的數字,把他放到第一位,然後找到最大的數字放到最後一位。然後再找到第二小的數字放到第二位,再找到第二大的數字放到倒數第二位。以此類推,直到完成排序。
3、選擇排序
思路是設有10個元素a[1]-a[10],將a[1]與a[2]-a[10]比較,若a[1]比a[2]-a[10]都小,則不進行交換。若a[2]-a[10]中有一個以上比a[1]小,則將其中最大的一個與a[1]交換,此時a[1]就存放了10個數中最小的一個。同理,第二輪拿a[2]與a[3]-a[10]比較,a[2]存放a[2]-a[10]中最小的數,以此類推。
4、插入排序
插入排序是在一個已經有序的小序列的基礎上,一次插入一個元素*
一般來說,插入排序都採用in-place在數組上實現。
具體演算法描述如下:
⒈ 從第一個元素開始,該元素可以認為已經被排序
⒉ 取出下一個元素,在已經排序的元素序列中從後向前掃描
⒊ 如果該元素(已排序)大於新元素,將該元素移到下一位置
⒋ 重復步驟3,直到找到已排序的元素小於或者等於新元素的位置
⒌ 將新元素插入到下一位置中
⒍ 重復步驟2~5
Ⅲ c語言對從鍵盤輸入的十個整數進行降序排序,排序後輸出第二大的數,編寫fun函數
排序有挺多方法的,例如:冒泡排序法、選擇排序法
以下使用選擇排序
#include<stdio.h>
voidfun(inta[],intn)
{
inti,j,k,tmp;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;++j)
if(a[j]>a[k])k=j;
if(k!=i)
{
tmp=a[k];a[k]=a[i];a[i]=tmp;
}
}
}
intmain()
{
inta[10];
inti;
for(i=0;i<10;i++)scanf("%d",&a[i]);
fun(a,10);
for(i=0;i<10;i++)printf("%d ",a[i]);
printf("第二大的數是:%d",a[1]);
return0;
}
Ⅳ 急!!!!!!!!C語言 運用函數進行升序降序排列
在scanf("%c\n",&style);前加 char c; scanf("%c",&c);
原因:前面輸入數字時有輸入回車 scanf把這個回車賦給了style 所以 要把先那個回車吃了
Ⅳ C語言如何 對10個數進行降序排序。 這邊要課程設計了。希望大家幫幫忙
冒泡排序演算法實現10個數的降序排列,參考代碼如下:
#include"stdio.h"
#defineN10
intmain()
{
inti,j;
intt,a[N];
for(i=0;i<N;++i)
scanf("%d",&a[i]);
for(i=0;i<N-1;++i)
for(j=0;j<N-i-1;++j)
if(a[j]<a[j+1]){
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(i=0;i<N;++i)
printf("%d",a[i]);
return0;
}
Ⅵ 用C語言編寫,輸入10個數按降序排列
源程序代碼如下:
#define _CRT_SECURE_NO_WARNINGS//VS環境下需要,VC不需要
#include<stdio.h>//頭文件;
int main()
{
int i = 0;
int j = 0;
double temp = 0;
double a[10] = { 0 };//定義三個變數和一個長度為10的數組;
printf("請輸入十個數:
");//顯示「請輸入十個數」
for (i = 0; i < 10; i++)
{
scanf("%lf", &a[i]);//從鍵盤上輸入十個數送到數組;
}
for (i = 1; i < 10; i++)//for循環,進行9次循環;
{
for (j = i - 1; j >= 0; j--)//for循環,在每次大的循環中,a[i]從a[1]依次與它前面的數比較;
{
if (a[j + 1] > a[j])
{
temp = a[j + 1];
a[j + 1] = a[j];
a[j] = temp;//如果a[j + 1]>a[j],則把這兩個數組元素互換,目的把最大的數放到前邊;
}
else
{
break;
}
}
}
for (i = 0; i < 10; i++)
{
printf("% lf
", a[i]);//輸出排好順序的十個數;
}
return 0;//返回值為0;
}
程序運行結果如下:
(6)c語言中怎麼進行降序擴展閱讀:
其他實現方法如下:
#include<stdio.h>
int mysort(int *a, int n)
{
int i, j, temp;
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - 1 - i; j++)
{
if (a[j] > a[j + 1])
{
temp = a[j + 1];
a[j + 1] = a[j];
a[j] = temp;
}
}
}
return 0;
}
int main()
{
int a[10];
int i, j;
printf("input 10 numbers:
");
for (i = 0; i < 10; i++)
{
printf("the number%d is:", i + 1);
scanf("%d", a + i);
fflush(stdin);
}
mysort(a, 10);
for (i = 9; i >= 0; i--)
printf("%3d", a[i]);
printf("
");
return 0;
}
Ⅶ C語言數組七個數升序排列和降序排列怎麼編程
1、打開visual C++ 6.0-文件-新建-文件-C++ Source File。
Ⅷ 用c語言對n個整數進行降序排列,並輸出排序結果
#include<stdio.h>
voidsort(int*arr,intn);
intmain(intargc,char*argv[])
{
inti;
intarr[8]={12,67,122,0,-12,675,100,11};
sort(arr,8);
for(i=0;i<8;++i)
printf("%d",arr[i]);
return0;
}
//冒泡排序:降序
//arr:待排序的數組
//n:數組的長度
voidsort(int*arr,intn)
{
inti,j,t;
for(i=0;i<n-1;++i)
for(j=0;j<n-1-i;++j)
{
if(arr[j]<arr[j+1])
{
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
Ⅸ c語言中按單科降序(選擇)排序
void Sort_sub(Student *s,int n) //按單科降序(選擇)排序
{int i,j;
char t[10];
s=head;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(strcmp(s->num,s->next->num)>0)
{
strcpy(t,s->next->cgrade);
strcpy(s->next->cgrade,s->cgrade);
strcpy(s->cgrade,t);
strcpy(t,s->next->mgrade);
strcpy(s->next->mgrade,s->mgrade);
strcpy(s->mgrade,t);
strcpy(t,s->next->egrade);
strcpy(s->next->egrade,s->egrade);
strcpy(s->egrade,t);
strcpy(t,s->next->name);
strcpy(s->next->name,s->name);
strcpy(s->name,t);
}
s=s->next;
}
s=head;
}
}
Ⅹ 關於C語言進行降序排列
#include<stdio.h>
#include
<math.h>
//從鍵盤上輸入10個整數,要求用插入法實現對它們進行降序排列。
//(主函數完成輸入輸出功能,排序用函數sort()來實現)。
void
sort(int
a[],int
n)
{
int
i,j,temp;
for(i=0;i<n-1;i++)
{
temp=a[i+1];
j=i;
while(j>-1&&temp<a[j])
{
a[j+1]=a[j];
j--;
}
a[j+1]=temp;
}
}
int
main()
{
int
i,a[10]={0};
printf("請輸入10個數據:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
printf("%d\t",a[i]);
sort(a,10);
for(i=0;i<10;i++)
printf("%d\t",a[i]);
return
0;
}