排序(3)---------冒泡排序(C語言實現)
阿新 • • 發佈:2017-06-04
std 強調 tracking i++ oid printf pre rand() 執行
說到冒泡排序,大一的時候第一次學習這個排序算法,可能大家不知道,“冒泡”在我說的方言裏面是吹牛逼的意思。
所以就認為這個排序算法特吹牛逼有木有。
相信大家對全部的排序算法,這個想必是最熟悉的。
大學老師多次強調,去培訓。講師也會提到。這個在面試常常被問到,所以我建議大家最好把這個算法背下來,做到心中有冒泡,手上寫出來 哈哈。
好了,言歸正傳。
什麽是冒泡排序,所謂冒泡。比方有一天你神經病發作突然跑到河邊,扔了一塊石頭進去。如果這裏河底產生了一個氣泡,它會一直往上竄啊竄,知道露出水面。見天日。沒錯。這就是冒泡排序的核心步驟。
冒泡排序(Bubble Sort,臺灣譯為:泡沫排序或氣泡排序)是一種簡單的排序算法。它反復地走訪過要排序的數列,一次比較兩個元素,假設他們的順序錯誤就把他們交換過來。走訪數列的工作是反復地進行直到沒有再須要交換。也就是說該數列已經排序完畢。這個算法的名字由來是由於越小的元素會經由交換慢慢“浮”到數列的頂端。
源碼:
#include "stdafx.h" #include <stdlib.h> void Bubble_Sort() { int arr[10]; for ( int i=0; i<10; i++) //初始化數據 { arr[i] = rand()%520; //隨機生成數據 } printf("Before sort:\n"); //打印排序前的數據 for (int i = 0; i < 10; i++) { printf("%d ",arr[i]); } //開始排序 for (int i = 0; i < 10-1; i++) //僅僅須要比較length-1次,比方3個數相比 僅僅須要比較2次 //網上非常多代碼都是i<length 事實上多余了 { for (int j = 0; j < 10-i-1; j++) //每次都能找到最小的數,因此能夠將其排除,條件即變為:j<length-i-1 { if (arr[j] > arr[j+1]) //交換 { int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } printf("\nAfter sort:\n"); //打印排序後的數據 for (int i = 0; i < 10; i++) { printf("%d ",arr[i]); } } int _tmain(int argc, _TCHAR* argv[]) { Bubble_Sort(); printf("\n"); system("pause"); return 0; }
執行結果:
Before sort: 41 267 94 500 449 124 38 238 442 24 After sort: 24 38 41 94 124 238 267 442 449 500 請按隨意鍵繼續. . .
如有錯誤,望不吝指出。
排序(3)---------冒泡排序(C語言實現)