插入 選擇 氣泡排序的綜述

2022-05-02 14:36:15 字數 870 閱讀 2278

插入、選擇、氣泡排序演算法都比較簡單,平均時間複雜度均為o(n2),屬於低效的排序。問題在於,我們需要深入認識並理解他們的排序思想:

1 插入排序:

插入排序的基本原則是這樣的:從第二個元素開始,到最後乙個元素(共n-1趟遍歷),對於每個當前元素,如果它前面的元素元素比該元素大(比如a[0]》a[2]),那麼將這些前面的元素都向後移動一位,同時將當前元素插入到空位處!!!

在此,我們抓住插入排序的兩個要點:1 對n-1個元素均要進行比較操作;2 每一次的比較 都是 拿當前元素 與其前面所有的數進行比較(可以認為這是一種全域性性的比較)。

2 選擇排序:

選擇排序的原則是這樣的:先從所有n個數中選擇最小的,把它放在第一位;再從剩下的n-1個數中選擇最小的,把它放在第二位;......(剩下操作雷同,有沒有感覺選擇排序很像我們日常的操作方式?)。

在此,給出選擇排序的兩個要點:1 每次的比較都是  在當前剩下的所有數中找乙個全域性最小的(儘管和插入排序比較的物件不同,但是比較的範圍是相同的,只不過是倒著來的)2 我們要進行n-1次選擇最小這樣的操作(最後剩下的乙個自然是最小的)

3  氣泡排序:

氣泡排序的原則是這樣的: 第一輪冒泡,將最大的數冒泡到最後,第二輪冒泡將次大的數冒泡到倒數第二的位置....(剩下的操作雷同),因此一共進行n-1次冒泡。每一輪的冒泡,是扎樣操作的:將相鄰的元素比較(從標號0的數開始),如果前面的數大於後面的數,則將其冒泡到後面(即交換位置),一直到冒泡到屬於這個元素應該在的位置(比如最大的數,冒泡到最後),因此這裡的比較,是區域性操作,但是一輪冒泡,整體上仍然是一種全域性操作。

仔細觀察上述操作,我們發現他們的共同點在於: 要完成所有元素的排序,總要進行n-1個「大操作」;對於每一次的操作,都是一種「全域性比較操作」。這也是為什麼他們的時間複雜度都是o(n2)。

冒泡,插入,選擇排序

經典的排序演算法,此文章介紹三個 氣泡排序 它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。public void bubblesort int a while iswrap for int ...

冒泡 插入 選擇 快速排序

各位親 有時間可以去看看我的 金駿家居 店 買時說明在我的部落格看到有優惠哦 還有意外禮品贈送 真正的程式設計師 店 氣泡排序 每次找出最大或者最小的數放到序列的最後。插入排序 每一次查詢都把數放到已排序序列合適的位置。例子 4,3,2,1如數中的第乙個數肯定是有序的,從第二個數開始3小於4,放在已...

演算法 插入選擇氣泡排序

演算法 排序 n 2 時間複雜度是o n 2 的排序有插入,選擇,冒泡。由於演算法思想比較簡單易懂,也不複雜。我們就簡單講講。插入排序 乙個元素是有序的,從第二個元素開始,依次將每個元素插入到前面序列的對應位置,最終整個序列有序。外層n 1趟。void insertsort int a,int n ...