㈠ c語言如何從大到小排序呢
給你提供幾個比較簡單的演算法思路。
首先糾正一下,你要排序的對象不要存在單個變數里,要存在數組里,這樣才能用循環的方式取用。
插入排序
如果你打過牌,這種排序你就一定能理解。從未排序的部分取出一個元素來,然後插入到已經排好序的部分。就這樣一個一個的查入。
2.選擇排序
從未排序的部分選出最大(最小)的一個放在已排好序的部分的最後。然後重復此步驟。
3.歸並排序
排一個很長的序列可能比較麻煩,我就把他們分成兩份,把他們分別排好,然後再把他們接起來,接起來就很簡單了。而這兩個怎麼排呢,我再把他們分別分成兩個……這就要用到遞歸了。
總結一下,前兩個時間復雜度是平方,後一個是n*logn 。還有很多其他排序方法,其中冒泡排序比較費時但是很好寫,如果你不是想知其所以然,直接網路冒泡套用一下就行。
如果想系統的學習演算法,推薦你讀演算法導論,就是那本很厚的。講的很好。
㈡ C語言給1,2,3按大小排序,寫詳細,謝謝
#include <stdio.h>
void swap(int &a,int &b){ //兩個元素交換
int t=a;
a=b;b=t;
}
void sort(int &a,int &b,int &c){ //三個數排序
if(a>b)swap(a,b);
if(a>c)swap(a,c);
if(b>c)swap(b,c);
}
int main() {
int a=1,b=2,c=3;
scanf ("%d%d%d",&a,&b,&c);
sort(a,b,c);
printf("%d %d %d",a,b,c);
return 0;
}
㈢ C語言中怎麼把三個整數從小到大排列
原理就是運用冒泡演算法,把最大的數浮在最上面,而小的數就下沉,最後就輸出。
方法如下:
分析:我們想辦法把最小的數放到x上,先將x與y進行比較,如果x>y則將x與y的值進行交換,
然後再用x與z進行比較,如果x>z則將x與z的值進行交換,這樣能使x最小。
1.從控制台讀入三個數;
2.實現三個數從小到大排序:
(1)將第一個數作為最小數,依次和第二,三個數進行比較。兩次比較重如果有任意一個比第一個小,則將兩個數交換
;
(2)在(1)步後,得到第一個數為最小數。再將第二個數與第三個數比較大小後即可實現三個數從小到大排序。
拓展資料
兩種常用排序方法:
1.選擇排序法:從一列數中,選擇第一個作為最小數,依次和後面的數進行比較。如有比第一個數小的數,則交換兩個數。最後排到該列數都倒數第二個時,這列數就從小到大排好了順序。
2.冒泡排序法:思路與選擇排序法一致。不同的是,冒泡排序將第一個作為最大數,然後再和該數後的數進行比較。
㈣ C語言四個數由大到小排列
變數t沒有初始化就賦值給a,第一個裡面應該是t=a 而不是a=t
最好在定義變數的時候就初始化變數,否則就容易出現你說的那種好大的負數
㈤ C語言中要把三個數從大到小排列出來應該怎麼編
初學簡單版本代碼如下:
#include<stdio.h>
int main( )
{
int a, b, c;//定義三個數的變數
int t ;//定義作為交換的變數
scanf ( "%d%d%d" , &a, &b, &c ) ; //取值
if ( a < b )
{t = a; a = b; b = t ;};//如果a,b,進行交換,反之不動
if ( a < c )
{t = a; a = c; c = t ;};//同上
if ( b < c )
{t = b; b = c; c = t ;};
printf( "%-5d%-5d%-5d " , a, b, c);//輸出
}
(5)c語言的大小排序擴展閱讀:
C語言中其他多個數排序的方法:
1、冒泡排序法
#include <stdio.h>
#define SIZE 8
void bubble_sort(int a[], int n);
void bubble_sort(int a[], int n)
{
int i, j, temp;
for (j = 0; j < n - 1; j++)
for (i = 0; i < n - 1 - j; i++)
{
if(a[i] > a[i + 1])
{
temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
} } }
int main()
{
int number[SIZE] = {95, 45, 15, 78, 84, 51, 24, 12};
int i;
bubble_sort(number, SIZE);
for (i = 0; i < SIZE; i++)
{
printf("%d ", number[i]);
}
}
2、選擇排序
#include<stdio.h>
void main()//主函數
{
int a[10];
int i,j,w;
printf("請輸入10個數字: ");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{
for(j=i+1;j<10;j++)
if(a[i]<a[j])//進行比較
//比較後進行交換
{
w=a[i];
a[i]=a[j];
a[j]=w;
}
㈥ 求C語言將數組元素大小排序!!
#include <stdio.h>
int main(){
int numbers[10] = { 10,2,3,4,5,6,9,8,7,1 };
int a,b, text, hello;
for(a=0; a<10-1; a=a+1) { //在這里進行比較的開始的代碼
hello = 1; //假如剩下的元素已經被排序好了,然後接著進行下面的比較
for(b=0; b<10-1-i; b=b+1){
if(numbers[b] > numbers[b+1]){
text= numbers[b];
numbers[b] = numbers[b+1];
numbers[b+1] = text;
hello= 0;
}
}
if(hello) break;
}
for(a=0; a<10; a=a+1){
printf("%d ", numbers[a]);
}
printf(" ");
return 0;
}
(6)c語言的大小排序擴展閱讀:
C語言中數組元素大小的相關排序規則:
一、首先需要對數組中的元素進行排列,默認是以字元串的規則進行從小到大排序;可接收一個參數:自定義的規則相關排序。參數的具體要求如下:
1、參數首先必須是一個函數;
2、函數必須有一個明確的返回值;
3、返回值必須是number類型,但不可以是NaN。
二、排序中的具體規則:
1、首先每次從數組中挑選出兩個元素傳入函數中,進行比較,直到所有進行排列的元素都被挑選完畢以後就不要再進行挑選;
2、如果返回值是一個正數,就交換這彼此的位置,實現大小的正確排列;
3、如果返回值是一個負數或0,此時說明大小位置的順序是正確的,此時就不需要交換彼此的位置。
4、默認同一字元的全形字元看做半形字元。不區分同一個字元(如日文的片假字)的半形與全形狀態。相同元素,維持原序,默認區分字母大小寫,同一個字元小寫在前,大寫在後。
注意:對數組的元素進行排序需要不斷比較兩個數字的大小,10個元素排序一共需要比較9次,直到所有的元素被都完完全全地被比較一次。
㈦ 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;
}
(7)c語言的大小排序擴展閱讀
C語言排序法
把一個數組進行排序可以使用選擇排序法。選擇排序法的原理在是每一趟循環尋找數組中最小的數的下標,然後按照遞增的順序放入數組中。
循環找出最小數的下標,該下標用min保存,直到比較完整個數組,即可找到最小的數,然後將該數放入數組的第一位,這樣就排好了一個元素。
需要再嵌套一層外層循環即可排好所有元素。第二次循環就不用再比較第一個元素了,因為第一個元素已經排好,依次類推,每一次循環就會排好一個,進行n-1次循環即可排好所有元素。
㈧ 用C語言比較三個數的大小,並按照從大到小排序
#include <stdio.h>
#include <math.h>
int main(void)
{
int a,b,c;
printf("請輸入任意三個整數a,b,c:");
scanf("%d%d%d",&a,&b,&c);
int s;
if(a>b)s=a,a=b,b=s;//比較a,b大小,通過賦值,使得a<b 。此語句目的:a<b
if(a>c)s=a,a=c,c=s;//進一步比較a,c大小,通過賦值得出最小值,並賦給a; 此語句目的:a<c
if(b>c)s=b,b=c,c=s;//最後比較出b,c中的較大值。
printf("從大到小的順序依次是:%d%d%d",c,b,a);
return 0;
}