插入排序
插入排序也是有两层循环控制,外层循环控制一共要进行多少轮循环,内存循环控制将外层循环指定的元素插入到合适的位置。
插入排序类似玩扑克排,我们拿到扑克牌后,从后往前找合适的位置,直到找到合适的位置,将扑克插入。
实现代码如下:
#include <stdio.h>
#include <vector>
using namespace std;
class InsertionSort {
public:
void sort(vector<int>& arr) {
int size = (int)arr.size();
for (int i=0; i<size; i++) {
for (int j=i; j-1>=0; j--) {
if (arr[j] < arr[j-1]) {
swap(arr, j, j-1);
} else {
break;
}
}
}
}
void swap(vector<int>& arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
};