日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言算法——实现冒泡排序

發布時間:2024/8/1 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言算法——实现冒泡排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C語言算法——排序算法

  • 1、冒泡排序
  • 2、插入排序
  • 3、選擇排序

1、冒泡排序

#include <stdio.h> int main ( ) {//冒泡排序int a[]={3,2,6,4,8,9,1,0,3,5,7,1};int len=sizeof(a)/sizeof(int);//求出數組中元素的個數 // printf("%d\n",len);int i=0,j;for (; i<len-1; i++) { //n個元素進行冒泡排序需要進行n-1次循環for (j=0; j<len-1-i; j++) { //每次循環完一次,最大的數就在最后,所以每進行一次循環后面的那幾個數就不需要參與循環,所以i<len-i-1if (a[j]>a[j+1]) {//實現元素的交換int temp = a[j];a[j] = a[j+1];a[j+1] = temp;}}}for (i=0; i<len; i++) {printf("%d ",a[i]);}printf("\n"); }

2、插入排序

默認數組中的第一個數是原本數組中排好序的第一個數,然后每次將排好序的數組的后面的第一個數作為哨兵。每次哨兵都和前面的排好序的數組中的數從后往前進行比較,然后將哨兵插入到已經排好序的數組中。然后哨兵逐漸往后移動,逐步將哨兵插入到數組中,這就是插入排序的整體思路和步驟。

#include <stdio.h> int main() {int arr[6]={4,6,1,2,8,7};int n = sizeof(arr)/sizeof(int); //求出數組的長度int i,j,k;for (i=1; i<n; i++) {k = arr[i]; //哨兵,從數組中的第二個元素開始進行存儲,每一次往后移動一位進行儲存,將這個數插入到前面已經排好序的數組中。j=i-1; //已經排好序的數組的最后一個元素的下標。while(j>=0 && k<arr[j]){ //每次哨兵和前面排好序的數組中的元素從后往前進行比較,找到哨兵要插入的位置。arr[j+1]=arr[j]; //為哨兵騰出位置,以便于將哨兵插入數組中合適的位置。j--; //用j記錄最終哨兵要插入的位置。}arr[j+1] = k; //將哨兵插入到數組合適的位置(形成一個新的排好序的數組)}for (i=0; i<n; i++) {printf("%d ",arr[i]);}printf("\n"); }

3、選擇排序

說明:動圖來自與此鏈接,點擊我直接進入,感謝博主的分享

說明:動圖來自與此鏈接,點擊我直接進入,感謝博主的分享

思路:
每次從待排序列中選出一個最小值,然后放在序列的起始位置,直到全部待排數據排完即可。

實際上,我們可以一趟選出兩個值,一個最大值一個最小值,然后將其放在序列開頭和末尾,這樣可以使選擇排序的效率快一倍。

方案一:只找最小的值,將最小的值往前移

#include <stdio.h> int main() {int a[]={2,9,5,0,1,3,6,8};int n = sizeof(a)/sizeof(int);//求出數組a的長度 // printf("%d\n",n);int begin=0,end=n-1;while (begin<end) {int min=a[begin];//min用于存儲數組中元素的最小的值int t=begin;//t表示的是數組中最小數的下標for(int i=begin ; i<end;i++){if (min>a[i]) {min=a[i];t = i;}}a[t]=a[begin];a[begin] = min;begin++;}int i = 0;for (; i<n; i++) {printf("%d ",a[i]);}printf("\n"); }

方案二:找最小值和最大值,最小值往前移,最大值往后移

#include <stdio.h> int main() { // 思路: // 每次從待排序列中選出一個最小值,然后放在序列的起始位置,直到全部待排數據排完即可。 // 實際上,我們可以一趟選出兩個值,一個最大值一個最小值,然后將其放在序列開頭和末尾,這樣可以使選擇排序的效率快一倍。int a[]={2,9,5,0,1,3,6,8};int n = sizeof(a)/sizeof(int);//求出數組a的長度 // printf("%d\n",n);int begin=0,end=n-1;//begin表示數組的第一個元素,end表示數組的最后一個元素。int x=0,y=0; //x,y分別記錄數組中最大值、最小值的數的下標。while(begin<end){int min = a[begin],max = a[begin];//先將數組中的第一個元素作為最大值和最小值(因為我們也不知道最大值最小值在哪)//使用for循環遍歷數組,每一找到數組中的最大值和最小值賦值給max和min。int i=begin;for (; i<=end; i++) {if (a[i]>max) {max=a[i];x=i; //記錄所查找范圍內最大數的下標}if (a[i]<min) {min=a[i];y=i; //記錄所查找范圍內最小數的下標}}//將數組中最大數的下標和end下標的數值進行交換a[x]=a[end];a[end] = max;//將數組中最小數的下標和begin下標的數值進行交換a[y]=a[begin];a[begin] = min;//此時最左邊和最右邊已經存儲了最小值和最大值,所以begin要往后移動,end要往前移動,在這個新的begin和end的范圍內再進行選擇排序++begin;end--;}int i=0;for (i=0; i<n; i++) {printf("%d ",a[i]);}printf("\n"); }

總結

以上是生活随笔為你收集整理的C语言算法——实现冒泡排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲熟妇av一区二区三区 | 欧美xx在线 | 精品国产一区二区三区久久久蜜臀 | 国产精品麻豆一区二区三区 | 中文字幕一区二区在线观看 | 网站黄在线| 涩涩视频在线观看 | 精品久久福利 | 色婷婷综合久久久中文字幕 | 黄网视频在线观看 | 国产精品日韩一区 | 成人黄色网 | 精品1区2区3区| 国内成人免费视频 | 女人和拘做爰正片视频 | 在线观看国产网站 | 欧美被狂躁喷白浆精品 | 久久精品国产一区二区 | 嫩色av | 精品欧美黑人一区二区三区 | 2021久久| 久久视奸| 日本精品一区 | 国产无码精品在线观看 | 精品人妻在线播放 | 国产福利视频在线 | 国产美女主播在线观看 | 狠狠干狠狠撸 | 日韩精品一二三区 | 丰满人妻在公车被猛烈进入电影 | 日本在线三级 | 舌奴调教日记 | 懂色av蜜臀av粉嫩av分享吧最新章节 | 日韩欧美天堂 | 亚洲福利在线播放 | 久久婷综合 | 性一交一乱一乱一视频 | 色综合天天射 | 天天插视频 | 日本特黄视频 | 97射射 | 六月丁香婷婷激情 | 国产福利免费观看 | 亚洲第一视频网 | 懂色av蜜臀av粉嫩av分享 | 男生坤坤放进女生坤坤里 | 久久这里精品 | 在线91观看| 成人综合区 | 午夜影院在线免费观看 | 天天操天天干天天摸 | 免费毛片在线播放免费 | 性欧美大战久久久久久久 | h在线网站| av电影在线观看 | 国产视频一区二区三区四区五区 | 亚洲欧美激情小说另类 | 欧美一区二区三区在线看 | 国产视频在线免费观看 | wwwav网站| av中文网站 | 日韩高清专区 | www.五月天婷婷.com | 亚洲自拍另类 | 超碰日韩 | 日韩 欧美 国产 综合 | a无一区二区三区 | 国产十八熟妇av成人一区 | 修仙淫交(高h)h文 | 欧美成人午夜剧场 | 亚洲欧美日韩网站 | 久久精品a亚洲国产v高清不卡 | 少妇熟女高潮流白浆 | 国产精品日日做人人爱 | 夜夜干夜夜 | 欧美日b片 | 亚洲欧美一区二区三区四区 | 国产人成一区二区三区影院 | 欧美嫩草影院 | 日本护士体内she精2xxx | 国产乱妇无码大片在线观看 | 日本公与丰满熄 | 天天操天天撸 | 亚洲免费视频播放 | 亚洲色图图片 | 日韩电影二区 | 美女啪啪网址 | 怡红院成人影院 | 天天舔天天| 国产成人av免费观看 | 国产做爰免费观看视频 | 亚洲色图27p | 久久久免费高清视频 | 日日天天 | 在线观看亚洲精品视频 | 蜜桃av色偷偷av老熟女 | 久久亚洲精选 | 国产精品无码久久久久一区二区 | 天堂一区在线 |