劇多
首頁
資訊
體育
娛樂
汽車
投資
財經
軍事
科技
數碼
科學
遊戲
歷史
健康
政治
影視
旅遊
育兒
美食
時尚
房產
農業
社會
文化
教育
技術
美文
情感
故事
家居
職場
自然
闢謠
心理
攝影
漫畫
生活
其它
Club
Tips
熱門話題
搜尋
註冊
登入
首頁
>
Club
>
2021-03-05 02:55
C語言氣泡排序問題!不會寫了?
8
回覆列表
1 # LED景觀亮化專家
氣泡排序的基本思想就是不斷比較相鄰的兩個數,讓較大的元素不斷地往後移。經過一輪比較,就選出最大的數;經過第2輪比較,就選出次大的數,以此類推。
#include<stdio.h>#include<stdlib.h>#define N 8void bubble_sort(int a[],int n);//一般實現void bubble_sort(int a[],int n)//n為陣列a的元素個數{//一定進行N-1輪比較for(int i=0; i<n-1; i++){//每一輪比較前n-1-i個,即已排序好的最後i個不用比較for(int j=0; j<n-1-i; j++){if(a[j] > a[j+1]){int temp = a[j];a[j] = a[j+1];a[j+1]=temp;}}}}//最佳化實現void bubble_sort_better(int a[],int n)//n為陣列a的元素個數{//最多進行N-1輪比較for(int i=0; i<n-1; i++){bool isSorted = true;//每一輪比較前n-1-i個,即已排序好的最後i個不用比較for(int j=0; j<n-1-i; j++){if(a[j] > a[j+1]){isSorted = false;int temp = a[j];a[j] = a[j+1];a[j+1]=temp;}}if(isSorted) break; //如果沒有發生交換,說明陣列已經排序好了}}int main(){int num[N] = {89, 38, 11, 78, 96, 44, 19, 25};bubble_sort(num, N); //或者使用bubble_sort_better(num, N);for(int i=0; i<N; i++)printf("%d ", num[i]);printf("\n");system("pause");return 0;}
供參考
發表回復
相關內容
c語言氣泡排序方法默寫?
c語言實現:使用氣泡排序,從小到大排列,輸出每一趟排序後的結果以及總的比較次數?
∧
中秋節和大豐收的關聯?
∨
空調安裝怎麼排氣和怎麼收氟?
熱門排行
礦坑修復工程包括哪些項目?
江河水哪個app能看?
同步車擺壓腳高低怎麼調?
233樂園怎麼獲得蛋仔派對裡的潮流纖維?
去應力的目的是什麼?
南洋女兒情碧華的結局?
ps運行占用c盤空間怎麼辦?
大宋少年志2綜藝叫什麼名字?
情人說感冒好些了怎麼回復他?
一個水立方等於多少千克?
氣泡排序的基本思想就是不斷比較相鄰的兩個數,讓較大的元素不斷地往後移。經過一輪比較,就選出最大的數;經過第2輪比較,就選出次大的數,以此類推。
#include<stdio.h>#include<stdlib.h>#define N 8void bubble_sort(int a[],int n);//一般實現void bubble_sort(int a[],int n)//n為陣列a的元素個數{//一定進行N-1輪比較for(int i=0; i<n-1; i++){//每一輪比較前n-1-i個,即已排序好的最後i個不用比較for(int j=0; j<n-1-i; j++){if(a[j] > a[j+1]){int temp = a[j];a[j] = a[j+1];a[j+1]=temp;}}}}//最佳化實現void bubble_sort_better(int a[],int n)//n為陣列a的元素個數{//最多進行N-1輪比較for(int i=0; i<n-1; i++){bool isSorted = true;//每一輪比較前n-1-i個,即已排序好的最後i個不用比較for(int j=0; j<n-1-i; j++){if(a[j] > a[j+1]){isSorted = false;int temp = a[j];a[j] = a[j+1];a[j+1]=temp;}}if(isSorted) break; //如果沒有發生交換,說明陣列已經排序好了}}int main(){int num[N] = {89, 38, 11, 78, 96, 44, 19, 25};bubble_sort(num, N); //或者使用bubble_sort_better(num, N);for(int i=0; i<N; i++)printf("%d ", num[i]);printf("\n");system("pause");return 0;}供參考