1. 程式人生 > >常見的排序演算法—氣泡排序

常見的排序演算法—氣泡排序

氣泡排序
氣泡排序演算法的運作如下:(從後往前)
>比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
>對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
>針對所有的元素重複以上的步驟,除了最後一個。
>持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

我們通過仿函式的形式來實現氣泡排序的排列順序。

#include<iostream>
#include<assert.h>
using namespace std;

struct Less
{
    bool
operator()(int a, int b) { return a > b; } }; struct Great { bool operator()(int a, int b) { return a < b; } }; template<class Comp> void bubble_sort(int* data,int size,Comp) { for (int i = 0; i < size-1;i++) { for (int j = 0; j < size - i-1
; j++) { if (Comp()(data[j],data[j+1])) { int tmp = data[j + 1]; data[j + 1] = data[j]; data[j] = tmp; } } } } int main() { int data[10] = { 9, 8, 7, 6, 5, 2, 3, 1, 4, 0 }; bubble_sort(data,sizeof
(data)/sizeof(data[0]),Great()); return 0; }

相關推薦

陣列的常見排序演算法--氣泡排序,選擇排序

陣列的排序演算法--氣泡排序,選擇排序 1.氣泡排序 基本思想 演算法實現 2.選擇排序演算法 基本思想 演算法實現 程式設計中,我們會經

常見演算法:C語言中的排序演算法--氣泡排序,選擇排序,希爾排序

氣泡排序(Bubble Sort,臺灣譯為:泡沫排序或氣泡排序)是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小

常見排序演算法氣泡排序

氣泡排序 氣泡排序演算法的運作如下:(從後往前) >比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。 >對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後

知識點6:常見排序演算法---氣泡排序

說起排序演算法,絕對是很多公司會要求現場手寫的部分,雖然我還沒有經歷過這個,畢竟只面試了一次,但難免會在下一次出現。我原本是打算在一個章節裡面全部寫完所有的排序演算法,但想來想去,與其一窩端,不明原理的記下來,不如拆分開來,一個一個地嘗試去解釋,說明。這樣便不用

演算法常見排序演算法-氣泡排序、歸併排序、快速排序

引言     對於程式設計中琳琅滿目的演算法,本人向來是不善此道也不精於此的,而說起排序演算法,也只是會氣泡排序。還記得當初剛做開發工作面試第一家公司時,面試官便讓手寫氣泡排序(入職之後才知道,這面試官就是一個氣泡排序"病態"愛好者,逢面試必考氣泡排序-__-)。後來看吳軍的一些文章,提

java排序演算法氣泡排序

快速排序 氣泡排序的思想方法: 1.從無序序列頭部開始,進行兩兩比較,根據大小交換位置,直到最後將最大(小)的資料元素交換到了無序佇列的隊尾,從而成為有序序列的一部分; 2.下一次繼續這個過程,直到所有資料元素都排好序。演算法的核心在於每次通過兩兩比較交換位置,選出剩餘無序序列裡最大(小

排序演算法--氣泡排序(bubble sort)

氣泡排序是一個簡單的排序演算法,演算法複雜度n的平方,特點是兩兩比較,每次遍歷會將最大值或最小值放在最後,像冒泡一樣,每次的最大值或最小值,逐漸冒出,故名氣泡排序; 程式碼如下 void swap( int& a,int& b) {//資料交換的函式,這裡另類了一點,沒有

經典排序演算法 - 氣泡排序Bubble Sort

最近學習了一下排序演算法,寫篇文章記錄一下,詳細講解網上有很多,可以自己去查 氣泡排序Bubble Sort 氣泡排序是通過兩兩比較,最大的往後移,重複這一過程直到資料不再交換,則排序完成。氣泡排序的時間複雜度是O(n²),是穩定排序。 演算法描述(Java):

排序演算法氣泡排序(關鍵詞:資料結構/演算法/排序演算法/氣泡排序

假定:有 1 個亂序的數列 nums ,其中有 n 個數。 要求:排好序之後是 從小到大 的順序。 氣泡排序演算法 程式碼 from swap import swap def bubble_sort(nums): n = len(nums) for i in rang

小甲魚 排序演算法 氣泡排序

小甲魚 排序演算法 氣泡排序   氣泡排序 基本思想:兩兩相鄰記錄的關鍵字,如果反序則交換,直到沒有反序的記錄為止 (PS  反序:大在前,小在後)   下面的程式碼不是真正意義的氣泡排序(因為比較的不是相鄰) //BubbleSort氣泡排

排序演算法----氣泡排序

氣泡排序是一種簡單的排序演算法,演算法的原理如下:      1. 比較相鄰元素,如果第一個比第二個大,就交換他們兩者之間的順序      2. 對每一對相鄰元素作相同工作,從開始第一對到結尾最後一對,第一次完畢後,最後的元素就是最

經典排序演算法——氣泡排序演算法詳解

一、演算法基本思想 (1)基本思想 氣泡排序的基本思想就是:從無序序列頭部開始,進行兩兩比較,根據大小交換位置,直到最後將最大(小)的資料元素交換到了無序佇列的隊尾,從而成為有序序列的一部分;下一次繼續這個過程,直到所有資料元素都排好序。 演算法的核心在於每次通過兩兩比較交換位置,選

python中經典排序演算法----- 氣泡排序

lt = [1, 5, 7, 3, 2] # 氣泡排序:從小到大 # 第一輪:1 5 3 2 7 # 第二輪:1 3 2 5 7 n = len(lt) # 外層迴圈控制比較多少輪 for i in range(n-1): # 內層迴圈控制元素的比較 for

排序演算法---氣泡排序

參考網址:https://www.cnblogs.com/onepixel/articles/7674659.html 氣泡排序是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果它們的順序錯誤就把它們交換過來。走訪數列的工作是重複地進行直

排序演算法——氣泡排序

程式語言:JavaScript 演算法核心思想: 1.比較相鄰的元素,如果第一個比第二個大,就交換他們兩個 2.對每一對相鄰元素做同樣的工作 Array.prototype.bubbleSort = function () {

[排序演算法]--氣泡排序的三種實現(Java)

氣泡排序是非常好理解的,以從小到大排序為例,每一輪排序就找出未排序序列中最大值放在最後。 設陣列的長度為N: (1)比較前後相鄰的二個數據,如果前面資料大於後面的資料,就將這二個數據交換。 (2)這樣對陣列的第0個數據到N-1個數據進行一次遍歷後,最大的一個數據

三個簡單、基本的排序演算法---氣泡排序 、選擇排序、插入排序

1.氣泡排序 public class BubbleSort { public static void sort(long[] arr){ long temp; for(int i=0;i<arr.length-1;i++){ for(int j=ar

簡單排序演算法———氣泡排序

public class BubbleSortTest { public static void main(String [] args){ int arr[] = {1,3,2,0}; int arrLowToHigh[] = {1,2,3,4}

java中的排序演算法——氣泡排序

氣泡排序 工作原理: 重複的訪問要排序的序列,一次比較兩個元素,如果他們的順序錯誤就把它們交換過來,重 復進行訪問,直到排序完成,越小的元素會經過不停的交換慢慢浮到序列的最上層。 即每輪迴圈把最大的數放在最後,與選擇排序的區別,無需記錄最大數的位置,一邊比較一邊

java 排序演算法 氣泡排序

一般的氣泡排序會有重複的比較,所以需要對氣泡排序進行優化,優化後的氣泡排序 package shujujiegou; import java.util.Arrays; /** * 氣泡排序的優化演算法 * @author TomCat * */ pu