經典演算法學習 氣泡排序

2021-07-09 19:53:58 字數 2111 閱讀 7960

氣泡排序是我們學習的第一種排序演算法,應該也算是最簡單、最常用的排序演算法了。不管怎麼說,學會它是必然的。今天我們就用c語言來實現該演算法。示例**已經上傳至:

演算法描述如下:

(1)比較相鄰的前後兩個資料,如果前面資料大於後面的資料,就將兩個資料交換;

(2)這樣對陣列的第0個資料到n-1個資料進行一次遍歷後,最大的乙個資料就到了最後乙個位置,也就是下標為n-1的位置(沉到了水底)。

(3)n = n-1,如果n不為0就重複(1)(2)兩步,否則排序完成,也就是對陣列的第0個資料到n-2個資料再次進行遍歷;

完整的**實現如下:

//

// main.c

// bubblesort

//// created by chenyufeng on 16/1/28.

//#include typedef int bool;

#define true 1

#define false 0

int *bubblesort01(int arr,int len);

void bubblesort03(int arr,int len);

int main(int argc, const char * argv) ;

/***指標向後移位;

*/// int *p = bubblesort02(array, 7);

//// for (int i = 0; i < 7; i++)

/*** 可以使用傳引用的方式,實現如下;

這裡不需要返回值,直接列印即可,推薦使用這種方式,方便;

*/bubblesort04(array, 7);

for (int i = 0; i < 7; i++)

return 0;

}//常規的冒泡;

int *bubblesort01(int arr,int len)}}

return arr;

}//常規的冒泡,不需要返回值;

void bubblesort03(int *arr,int len)}}

}

當然也可以把上面的交換元素的**抽取出來,寫成乙個交換函式swap。**實現如下:

//

// main.c

// bubblesort

//// created by chenyufeng on 16/1/28.

//#include typedef int bool;

#define true 1

#define false 0

int *bubblesort01(int arr,int len);

void swap(int *a,int *b);

int main(int argc, const char * argv) ;

/***指標向後移位;

*/// int *p = bubblesort02(array, 7);

//// for (int i = 0; i < 7; i++)

/*** 可以使用傳引用的方式,實現如下;

這裡不需要返回值,直接列印即可,推薦使用這種方式,方便;

*/bubblesort01(array, 7);

for (int i = 0; i < 7; i++)

return 0;

}//常規的冒泡;

int *bubblesort01(int arr,int len)}}

return arr;

}void swap(int *a,int *b)

交換類排序:借助資料元素之間的相互交換進行排序的一種方法。如氣泡排序、快速排序。

插入類排序:將無序的各個元素依次插入到已經有序的線性表中。如直接插入排序、希爾排序。

選擇排序:掃瞄整個線性表,選出最小的元素,將它交換到表的最前面;然後對剩下的繼續同樣的方法,直到子表為空。如直接選擇排序、堆排序。

說明下,氣泡排序的時間複雜度為o(n^2),空間複雜度為o(1).是一種穩定的排序。

本文參考:

經典排序演算法學習筆記一 氣泡排序

資料結構 陣列 最差時間複雜度 o n 2 最優時間複雜度 o n 平均時間複雜度 o n 2 最差空間複雜度 總共o n 需要輔助空間o 1 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。針對所...

演算法學習之氣泡排序

基本思想 陣列 6,5,7,3,8,2 按從公升序排列。依次比較相鄰的兩個數,前乙個數比後乙個數大則交換位置,得到最大的數在最後。第一輪比較完後的結果為 5,6,3,7,2,8 第二輪比較得出倒數第二的數字 5,3,6,2,7,8 依次類推 package com.example.demo.othe...

演算法學習(二 氣泡排序

問題 給定陣列,進行排序 方法 依次找到每個位置上的元素。簡單理解就是每次得到乙個元素的相對大小位置。就想泡泡一樣,最大的泡泡會被沉在底下一樣。首先找到最大的泡泡,然後依次找到第二大的,第三大的。實現 package com.xueyou 氣泡排序 public class bubblesort s...