1. 程式人生 > 實用技巧 >《戀上資料結構與演算法》筆記1-排序

《戀上資料結構與演算法》筆記1-排序

排序演算法:

#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]); } }