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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

冒泡排序和选择排序

發布時間:2023/11/27 生活经验 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 冒泡排序和选择排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

八大排序中比較簡單的兩個---->選擇排序和冒泡排序

冒泡排序:

????????這個算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端(或者越大的元素會沉到底部,這取舍于你的數組的降序還是升序),所以叫冒泡排序!具體原理圖如下所示:

下圖摘自:百度安全驗證

void BubbleSort(int* ar, int len) //ar是指針是數組的指針
{assert(ar != NULL);for (int i = 0; i < len; i++)   //循環的輪數 比如數組由5個元素  比較四次就可以了{for (int j = 0; j < len - 1 - i; j++) //控制每一輪的比較次數//同樣以五個元素的數組為例  第一輪比較的時候需要比較四次{if (ar[j] > ar[j + 1])  //按照升序{                       //如果if中寫成了(ar[j] < ar[j + 1])int tmp = ar[j];ar[j] = ar[j + 1];ar[j + 1] = tmp;}}}
}

選擇排序:

????????首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。

再從剩余未排序元素中繼續尋找最小(大)元素,然后放到已排序序列的末尾。

重復第二步,直到所有元素均排序完畢。

原理及過程如下圖所示:

該圖取自1.2 選擇排序 | 菜鳥教程

來看代碼:

void SelectSort(int* ar, int len)
{assert(ar != NULL);int minindex = 0;//存放最小值的下標for (int i = 0; i < len - 1; i++)       //從開頭開始{minindex = i;for (int j = i + 1; j < len; j++)  //走訪未排序的元素{if (ar[j] < ar[minindex]){minindex = j;}}//此時最小值的下標為minindex = j  然后將ar[minindex] 中的值和ar[i]中的值進行交換int temp = ar[minindex];ar[minindex] = ar[i];ar[i] = temp;}
}

再來說個排序算法的穩定性:

????????假定在待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序,這些記錄的相對次序保持不變,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,則稱這種排序算法是穩定的;否則稱為不穩定的。(百度百科)

白話說就是排序的時候如果兩個元素相等,再排序的時候這兩元素不進行交換,這個排序就是穩定的!

剛剛看到了一句話:

? ? ? ? 假設你到了2070年,你已經七老八十了,坐在空無一人的房間,臃腫老態,沒錢沒權,生活不能自理,然后對著上帝說:“上帝啊,讓我再年輕一次吧!”,上帝實現了你的愿望,你到了2021年,這下你準備怎么活呢?

努力吧兄弟們!

總結

以上是生活随笔為你收集整理的冒泡排序和选择排序的全部內容,希望文章能夠幫你解決所遇到的問題。

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