資料結構和演算法:03.冒泡、選擇排序
具體程式碼請看:NDKPractice專案的datastructure
知識點:
1. 巨集定義Log
列印
#define TAG "TAG"
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,TAG,__VA_ARGS__)
// 其他方法的定義 __android_log_print 取了一個別名(引數固定,可變)
2. rand() 隨機
// 輸出 0 到 49 之間的隨機數
rand() % 50
3. 氣泡排序
思想
:相鄰兩個數進行比較,如果前面的比後面的大,就進行交換,否則不需要交換
複雜度
:時間複雜度和空間複雜度都是 O(n的平方) ,可以優化的
void bubbleSort(int arr[],int len){
for (int i = 0; i < len - 1; ++i) { // 外迴圈代表迴圈次數 n - 1 步
for (int j = 0; j < len - i - 1; ++j) { // 內迴圈代表一次迴圈對比的次數 n-1,n-2,n-3,1
if(arr[j] > arr[j+1]){
// 交換 一次交換是三次賦值
swap(arr[j],arr[j+1]);
}
}
}
}
4. 選擇排序
思想
: 遍歷找出最小的位置,最後與第一個位置交換
複雜度
:空間複雜度是:O(1),耗費的時間比上邊未優化的氣泡排序要少很多
void selectSort(int arr[],int len){
for (int i = 0; i < len - 1; ++i) { // 外迴圈代表迴圈次數 n - 1 步
int min = i;
for (int j = i+1; j < len; ++j) { // 內迴圈代表一次迴圈對比的次數
if(arr[min] > arr[j]){
min = j;
}
}
swap(arr[min],arr[i]);
}
}
相關文章
- 從零開始學資料結構和演算法(一)冒泡與選擇排序資料結構演算法排序
- 資料結構與演算法——排序演算法-選擇排序資料結構演算法排序
- 【資料結構】選擇排序!!!資料結構排序
- 【資料結構】選擇排序資料結構排序
- 排序演算法之冒泡,選擇,插入和希爾排序演算法
- 資料結構&演算法實踐—選擇排序資料結構演算法排序
- 資料結構32:選擇排序資料結構排序
- 演算法與資料結構——選擇排序(c++)演算法資料結構排序C++
- 選擇法和冒泡法排序介面排序
- 複習資料結構:排序(三)——選擇排序資料結構排序
- 重學資料結構和演算法(四)之氣泡排序、插入排序、選擇排序資料結構演算法排序
- 排序法:選擇、冒泡、插入和快排排序
- PHP排序演算法(插入,選擇,交換,冒泡,快速)PHP排序演算法
- 單連結串列的排序(插入,選擇,冒泡)排序
- 冒泡,選擇排序法(C#)排序C#
- 排序演算法Python(冒泡、選擇、快速、插入、希爾、歸併排序)排序演算法Python
- 演算法與資料結構系列 ( 三 ) - 選擇排序法- Select Sort演算法資料結構排序
- Python演算法之---冒泡,選擇,插入排序演算法Python演算法排序
- 陣列基本操作及冒泡演算法、直接選擇排序陣列演算法排序
- 看圖輕鬆理解資料結構與演算法系列(選擇排序)資料結構演算法排序
- 冒泡、選擇、快排、插入排序—效能簡單測試/rand()邊界值——c++資料結構排序C++資料結構
- 指標對陣列排序選擇法和冒泡法指標陣列排序
- 【圖解資料結構】 一組動畫演示選擇排序圖解資料結構動畫排序
- 常見的三種排序演算法(選擇,冒泡,計數)排序演算法
- C語言排序 冒泡 選擇 快排C語言排序
- 排序演算法 - 氣泡排序和選擇排序排序演算法
- 【資料結構與演算法】內部排序之二:氣泡排序和選擇排序(改進優化,附完整原始碼)資料結構演算法排序優化原始碼
- 資料結構的選擇資料結構
- 排序演算法總結之直接選擇排序排序演算法
- 七、排序,選擇、冒泡、希爾、歸併、快速排序實現排序
- js資料結構和演算法(9)-排序演算法JS資料結構演算法排序
- 排序演算法__選擇排序排序演算法
- 排序演算法:選擇排序排序演算法
- (三)陣列的定義、折半查詢、排序(選擇和冒泡)陣列排序
- 資料結構和演算法(Golang實現)(25)排序演算法-快速排序資料結構演算法Golang排序
- 資料結構和演算法面試題系列—排序演算法之快速排序資料結構演算法面試題排序
- 資料結構與演算法——排序資料結構演算法排序
- (建議收藏)2020最新排序演算法總結:冒泡、選擇、插入、希爾、快速、歸併、堆排序、基數排序排序演算法