插入排序:简单来说,对一个序列,无序的元素一个个地插入已排序的部分。
C++实现:
#include<iostream> //交换数据 inline void my_swap(int &a, int &b) { int temp = a; a = b; b =temp; } //插入排序 void insert_sort(int *arr,int n) { //priot为了保存哨兵元素 int pviot = 0, j = 0; //第一个元素有序,因此从i=1开始 for (int i = 1; i < n; ++i) { pviot = arr[i]; j = i-1; //如果哨兵元素之前的元素比自己大,则不断移位 while(j >= 0 && arr[j] >= pviot) { my_swap(arr[j],arr[j+1]); --j; } //放置哨兵元素到适当位置 arr[j+1] = pviot; } } //打印数组 void dis_arr(int *a, int n) { std::cout << "The array is: "; for (int i = 0; i< n;++i) { std::cout << a[i] << " "; } std::cout << std::endl; } int main() { int arr[] = {1,-1,90,20,8,-80}; int n = sizeof(arr)/sizeof(*arr); dis_arr(arr,n); insert_sort(arr,n); dis_arr(arr,n); }