插入排序

79 阅读1分钟

插入排序

插入排序也是有两层循环控制,外层循环控制一共要进行多少轮循环,内存循环控制将外层循环指定的元素插入到合适的位置。
插入排序类似玩扑克排,我们拿到扑克牌后,从后往前找合适的位置,直到找到合适的位置,将扑克插入。
实现代码如下:

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