目前c++就是大學本科c語言課程+研一趕鴨子上架邊查語法邊寫了乙個project(只得了二十分(滿分一百的樣子))的水平。。。自學python到字典章節,但又不想丟下c語言,所以先在這裡立乙個小小的flag,希望以後每天都能來更點東西。。
今天剛開始看演算法導論的書,所以先寫一點關於排序的問題----插入排序(insertion sort),輸入為陣列a[5,2,4,6,1,3],輸出元素從小到大排列的a陣列。
完整**:
#includeusing namespace std;
void print(int a, int n)
cout << endl;
}void insertsort(int a, int n)
//a[j+1] = x;
} }}int main()
; cout << "初始序列: ";
print(a, 6);
insertsort(a, 6);
cout << "排序結果: ";
print(a, 6);
system("pause");
}
插入排序,從陣列第二個元素開始,將當前元素a[i]與它之前的元素一一對比,若當前元素小於之前的元素,則交換位置,否則保持順序不變。關於插入排序的工作原理有一篇部落格介紹的特別清晰:
問題及解決:剛開始執行的結果總是忽略了第乙個元素,結果是5,1,2,3,4,6.而我花了很長時間才發現問題出在**21行while的判斷語句裡面j>=0我漏掉了等號,所以後面元素與第乙個元素對比的時候j=0,就直接跳過交換步驟了,導致第乙個元素一直是5.
複雜度問題,還沒學到,這個要慌。。這個問題很大。。學到了再來更新吧。
Java學習之路 插入排序
排序思想 每步將乙個待排序的記錄,按其陣列下標大小插入到前面已經排序的子串行的合適位置 從後向前找到合適位置後 直到全部插入排序完為止。排序舉例 int a 預設第乙個陣列元素以排好序,選定第二個開始插入。第一次排序 選定a 2 7排序。1 7,不交換位置 排序結果 1 7 2 9 8 4 第二次排...
排序學習筆記 1 插入排序
學習排序,參考 測試程式 表示一下感謝 1.插入排序 1 直接插入排序 穩定排序,效能 o n 2 2 二分查詢插入 折半插入排序 這個演算法也是非常被大眾使用的,折半 二分已經深入人心了。不過它的資料後移卻給這個演算法拖了後腿。不過沒關係,我們能夠從中得到解決問題的思想 折半!穩定排序,效能 o ...
1)插入排序
直接插入排序的理解 來自維基百科 一般來說,插入排序都採用in place在陣列上實現。具體演算法描述如下 從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄 如果該元素 已排序 大於新元素,將該元素移到下一位置 重複步驟3,直到找到已排序的元素小於或者等...