天天看點

c語言找出最大值和最小值并按降序排輸出,C語言用排序法給十個數降序排列,用C語言編寫,輸入10個數按降序排列...

問題标題

C語言用排序法給十個數降序排列,用C語言編寫,輸入10個數按降序排列

2019-6-4來自ip:14.161.145.86的網友咨詢

浏覽量:562 手機版

問題補充:

C語言用排序法給十個數降序排列,用C語言編寫,輸入10個數按降序排列

網友答案

#includeint main(){int a10,temp;int i,j,k;for(i=0;iscanf("%d",&ai);for(i=0;i{k=i;for(j=i+1;jif(aj>ak)k=j;if(i!=k){temp=ak;ak=ai;ai=temp;}}for(i=0;iprintf("%d\n",ai);return 0;}不懂可以追問

網友答案

#include "stdafx.h"#include "stdio.h"int main(int argc, char* argv){int a10;int i,j,d;printf"請輸入十個整數,用空格隔開:";for(i=0;i{scanf("%d",&ai);}for(i=0;i{for(j=i+1;j{if(ai{d=ai;ai=aj;aj=d;}}}for(i=0;i{printf("%d ",ai);}return 0;}用選擇法。

網友答案

一、算法思想 選擇排序Selection sort是一種簡單直覺的排序算法。

它的工作原理是每一次從待排序的資料元素中選出最小或最大的一個元素,存放在序列的起始位置,直到全部待排序的資料有序。

選擇排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)個記錄中選取關鍵字最小的記錄作為有序序列中第i個記錄。

選擇排序有簡單選擇排序、堆排序等多種算法。

下面的分析、操作、程式均以簡單選擇排序算法為例進行講解。

二、操作過程 初始狀态: 49 38 65 97 76 13 27 49 32 13 第1趟: i k 13 (38) 65 97 76 49 27 49 32 13 第2趟: i k 13 13 (65) 97 76 49 27 49 32 38 第3趟: i k 13 13 27 (97) 76 49 65 49 32 38 第4趟: i k 13 13 27 32 (76) 49 65 49 97 38 第5趟: i k 13 13 27 32 38 (49) 65 49 97 76 第6趟: i,k 13 13 27 32 38 49 (65) 49 97 76 第7趟: i k 13 13 27 32 38 49 49 (65) 97 76 第8趟: i,k 13 13 27 32 38 49 49 65 (97) 76 第9趟: i k 13 13 27 32 38 49 49 65 76 97 三、參考程式#include #define MAX 10 void input(int arr, int n); void sort(int arr, int n); void display(int arr, int n); int main() { int arrMAX; printf"請輸入%d個數:\n", MAX; input(arr, MAX); printf"排序前:\n"; display(arr, MAX); sort(arr, MAX); printf"排序後:\n"; display(arr, MAX); return 0; } void input(int arr, int n) { int i; for(i=0; i { scanf("%d", &arri); } } void sort(int arr, int n) { int i, j, k; int temp; for(i=0; i { k = i; for(j=i+1; j { if(arrj { k = j; } } if(k != i) { temp = arrk; arrk =arri; arri = temp; } } } void display(int arr, int n) { int i; for(i=0; i { printf("%d ", arri); } printf("\n"); } 四、運作測試 請輸入10個數:49 38 65 97 76 13 27 49 32 13 排序前:49 38 65 97 76 13 27 49 32 13 排序後:13 13 27 32 38 49 49 65 76 97

網友答案

選擇法:#include "stdio.h"main(){int a11;int i,j,k,n;for (i=1;iscanf("%d",&ai);for(i=1;ifor(j=i+1;j{(ai>aj)?(a0=ai,ai=aj,aj=a0):(a0=0);}for(i=1;iprintf("%5d",ai);}起泡法:#include "stdio.h"main(){int a11;int i,j;for(i=1;iscanf("%d",&ai);for(i=1;ifor(j=1;j(aj>aj+1)?(a0=aj,aj=aj+1,aj+1=a0):(a0=0);for(i=1;iprintf("%5d",ai);}自己學的時候寫的。

才寫了不久,二種方法你可以做個比較。

網友答案

首先看看起泡法:所謂起泡法,就是将相鄰的兩個數作比較,如果第一個數比第二個數大,則進行交換,将小的調到前頭,這樣一趟比較下來,則小數上浮,最大的數沉到最底。

可以推知,要對10個數進行排序,則需要進行9趟比較,才能使10個數按大小順序排列。

每一趟都要進行兩個數之間的比較,在第一趟中,要比較9次,第二趟剛8次,依此類推,可以得知,如果有n個數,則要進行n-1趟比較,在第1趟比較中要進行n-1次兩兩比較,在第 j 趟比較中要進行 n-j 次兩兩比較。

據此,列出代碼如下:#include int main(){int i,j,temp,a11;printf("enter data:\n");for (i=1;i{printf("a%d=",i);scanf("%d",&ai);}printf("\n");for (i=1;iprintf("%5d",ai);printf("\n");for (j=1;jfor (i=1;i{if (ai>ai+1){temp=ai;ai=ai+1;ai+1=temp;}}printf("\nthe sorted numbers:\n");for (i=1;iprintf("%5d",ai);getch();return 0;}再來看看選擇法:所謂選擇法,就是将第一個數與餘下的所有的數都進行比較,如果第一個數比其他數都小,則不進行交換,如果餘下的數有一個以上比第一個數小,則将其中最大的一個與第一個數交換,這樣一趟比較下來,第一個數就存放了最小的數。

起泡法是最大數沉底,選擇法是最小數坐頭。

據此,選擇法代碼如下:#include int main(){int i,j,min,temp,a11;printf("enter data:\n");for (i=1;i{printf("a%d=",i);scanf("%d",&ai);}printf("\n");for (i=1;iprintf("%5d",ai);printf("\n");for (i=1;i{min=i;for (j=i+1;jif (amin>aj)min=j;temp=ai;ai=amin;amin=temp;}printf("\nthe sorted numbers:\n");for (i=1;iprintf("%5d",ai);getch();return 0;}

網友答案

#include "stdafx.h"#include "stdio.h"int main(int argc, char* argv){ int a10; int i,j,d; printf"請輸入十個整數,用空格隔開:"; for(i=0;i<10;i++) { scanf("%d",&ai); } for(i=0;i<9;i++) { for(j=i+1;j<10;j++) { if(ai...

網友答案

#include int main(){ int number10 = {95, 45, 15, 78, 84, 51, 24, 12,34,23}; for (int j = 0; j ai + 1) { int temp = ai;ai = ai + 1; ai + 1 = temp; } } for (int i = 0; i ax,然後采用分治的政策分别對a1~ak-1和ak+1~an兩組資料進行快速排序。

希爾排序 已知一組無序資料a1、a2、……an,需将其按升序排列。

首先取一增量d(d參考資料:排序-百度百科...

網友答案

#include int main(void){int i,j,max,Num;int Nums10;printf("\nPlace input 10 numbers:");for (i=0;i{printf("\nInput number %d:",i+1);scanf("%d",&Numsi);}for (i=0;i{max=0;for (j=0;j{if (Numsmax{max=j;}}if (Numsmax!=Nums9-i){Num=Numsmax;Numsmax=Nums9-i;Nums9-i=Num;}}for (i=0;i{printf("%d ",Numsi);}return 0;}

網友答案

代碼如下對10個整數進行升序排序: #include<stdio.h> int main() { int i,j,t,a10={5,4,8,3,6,9,7,222,64,88}; //排序 for(i=1;i<10;i++)//外循環控制排序趟數,n個數排n-1趟 { for(j=0;j<10-1;j++)//内循環每趟比較的次數,第j趟比較n-i次 { if(aj>aj+1)//相鄰元素比較,逆序則交換 { t=aj; aj=aj+1; aj+1=t; } } } printf"排序後的結果是:\n"; for(i=0;i<10;i++) { printf("%d",a<i>); } printf("\n"); return 0; } 冒泡法: 算法分析:如果有n個數,則要進行n-1趟比較。

在第1趟比較中要進行n-1次相鄰元素的兩兩比較,在第j趟比較中要進行n-j次兩兩比較。

比較的順序從前往後,經過一趟比較後,将最值沉底換到最後一個元素位置,最大值沉底為升序,最小值沉底為降序。

擴充資料:include用法: #include指令預處理指令的一種,預處理指令可以将别的源代碼内容插入到所指定的位置;可以辨別出隻有在特定條件下才會被編譯的某一段程式代碼;可以定義類似辨別符功能的宏,在編譯時,預處理器會用别的文本取代該宏。

插入頭檔案的内容 #include指令告訴預處理器将指定頭檔案的内容插入到預處理器指令的相應位置。

有兩種方式可以指定插入頭檔案: 1、#include&lt;檔案名> 2、#include"檔案名" 如果需要包含标準庫頭檔案或者實作版本所提供的頭檔案,應該使用第一種格式。

如下例所示: #include<math.h&gt;//一些數學函數的原型,以及相關的類型和宏 如果需要包含針對程式所開發的源檔案,則應該使用第二種格式。

采用#include指令所插入的檔案,通常檔案擴充名是.h,檔案包括函數原型、宏定義和類型定義。

隻要使用#include指令,這些定義就可被任何源檔案使用。

如下例所示: #include"myproject.h"//用在目前項目中的函數原型、類型定義和宏 你可以在#include指令中使用宏。

如果使用宏,該宏的取代結果必須確定生成正确的#include指令。

例1展示了這樣的#include指令。

【例1】在#include指令中的宏 #ifdef _DEBUG_ #define MY_HEADER"myProject_dbg.h" #else #define MY_HEADER"myProject.h" #endif #include MY_HEADER 當上述程式代碼進入預處理時,如果_DEBUG_宏已被定義,那麼預處理器會插入myProject_dbg.h的内容;如果還沒定義,則插入myProject.h的内容。

網友答案

#include //簡單選擇排序 void SelectSort(int r , int n) { int i; int j; int index; int temp; for (i=0; i

我來回答

驗證碼:

c語言找出最大值和最小值并按降序排輸出,C語言用排序法給十個數降序排列,用C語言編寫,輸入10個數按降序排列...

大家還關注