【吭哧吭哧算法】插入排序

void InsertSort(vector<int> &a){
    int n = a.size();
    int j = 0;
    int i = 1;
    int x = 1;
    while (x < n){
        int temp = a[i];
        if (temp >= a[j]){//如果當前數字比前面已經排好的數組最大的(也就是最後一個)還大,那就繼續往後找
            i++;
            j++;
            x++;
            continue;
        }
        else{
            while (j >= 0 && temp < a[j]){//如果當前數字比前面已經排好的數組最大的(也就是最後一個)小


                a[i] = a[j];
                i--;
                j--;
            }
                
            a[i] = temp;
                                
                
            x++;
            i = x;
            j = i - 1;
        }
    }
}

思想是,假定前面是已經排過的數,當前數要插在合適位置,
直接插入排序是一種最簡單的排序方法,它的基本操作是將一個記錄插入到已排好的有序的表中,從而得到一個新的、記錄數增1的有序表。
當前元素的前面元素均爲有序,要插入時,從當前元素的左邊開始往前找(從後往前找),比當前元素大的元素均往右移一個位置,最後把當前元素放在它應該呆的位置就行了。








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章