八大排序算法
一.冒泡排序
1.原理
2.代码
void bubbleSort(vector<int> &arr)
{int size = arr.size();bool swapped;//外层,遍历的趟数for (int i = 0; i < size - 1; i++){swapped = false;//内层,比较for (int j = 0; j < size - 1 - i; j++){if (arr[j] < arr[j + 1]){swap(arr[j], arr[j + 1]);swapped = true;}}if (!swapped){break;}}
}
#include "Sort_8.h"
#include<time.h>
int main()
{srand(time(NULL));vector<int>data;cout << "原始的排序数据: " << endl;for (int i = 0; i < 10; i++){data.push_back(rand() % 100);cout << data.back() << endl;}cout << endl;bubbleSort(data);cout << "排序之后的数据: " << endl;for (auto item : data){cout << item << " ";}cout << endl;
}
二.选择排序
1.原理
2.代码
void selectionSort(vector<int>& arr)
{int size = arr.size();int minIdx;for (int i = 0; i < size - 1; i++){minIdx = i;for (int j = i + 1; j < size; j++){if (arr[j] < arr[minIdx]) {minIdx = j;}}if (minIdx != i){swap(arr[i], arr[minIdx]);}}
}
三.插入排序
1.原理
2.代码
void insertionSort(vector<int>& arr)
{int size = arr.size();if (size <= 1) {return;}for (int i = 1; i < size; i++){int key = arr[i];int j = i - 1;while (j >= 0 && arr[j] > key){arr[j + 1] = arr[j];j--;}arr[j + 1] = key;}
}