1. 程式人生 > >排序(3)---------冒泡排序(C語言實現)

排序(3)---------冒泡排序(C語言實現)

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語言實現)