《戀上資料結構與演算法》筆記1-排序
阿新 • • 發佈:2020-08-12
排序演算法:
#include <iostream> //氣泡排序 void bubbleSort(int array[],int size){ std::cout << "array= " << array << std::endl; for (int end = size-1; end > 0; end--) { for (int begin = 1; begin <= end; begin++) { if (array[begin] < array[begin-1]) { int tmp = array[begin]; array[begin] = array[begin-1]; array[begin-1] = tmp; } } } for(int i = 0; i < size; ++i) { printf("%d ", array[i]); } }//優化 void bubbleSort1(int array[],int size){ std::cout << "array= " << array << std::endl; for (int end = size-1; end > 0; end--) { bool sorted = true; for (int begin = 1; begin <= end; begin++) { if (array[begin] < array[begin-1]) { int tmp = array[begin]; array[begin] = array[begin-1]; array[begin-1] = tmp; sorted = false; } } if (sorted == true) { break; } } for(int i = 0; i < size; ++i) { printf("%d ", array[i]); } } //優化 void bubbleSort3(int array[],int size){ std::cout << "array= " << array << std::endl; for (int end = size-1; end > 0; end--) { int sortedIndex = 1; for (int begin = 1; begin <= end; begin++) { if (array[begin] < array[begin-1]) { int tmp = array[begin]; array[begin] = array[begin-1]; array[begin-1] = tmp; sortedIndex = begin; } } end = sortedIndex; } for(int i = 0; i < size; ++i) { printf("%d ", array[i]); } } //選擇排序 void selectionSort(int array[],int size){ for (int end = size-1; end > 0; end--) { int maxIndex = 0; for (int begin = 1; begin <= end; begin++) { if (array[maxIndex] < array[begin]) {//假定的這個數小於迴圈掃描的數 maxIndex = begin; } } int tmp = array[maxIndex]; array[maxIndex] = array[end]; array[end] = tmp; } for(int i = 0; i < size; ++i) { printf("%d ", array[i]); } }