插入排序(C 兩個棧)

2021-09-10 16:45:48 字數 906 閱讀 2453

#include#includeusing namespace std;

/*通過使用兩個棧,來實現插入排序

result 排好序的棧

randomstack 隨機生成的亂序的棧

①彈出亂序的棧頂元素,賦值給tmp後並pop()刪除

②若result棧為空或者result棧頂元素<=tmp,把tmp壓入result棧,更新tmp;

若result棧不為空且result棧頂元素大於tmp,則把大於tmp的元素依次

pop()到randomstack棧,直至result棧為空或者result棧頂元素<=tmp,

把tmp壓入result棧,更新tmp

*/stackinsertsorting(stackrandomstack)

int tem = randomstack.top();//將亂序的棧頂元素傳給tem後,並刪除

randomstack.pop();

while (!randomstack.empty() ||tems;

s.push(1);

s.push(100);

s.push(30);

s.push(20);

s.push(10);

s.push(111);

s.push(2);

s.push(0);

s.push(60);

s.push(10);

cout << "排序後\n";

stackr;

r = insertsorting(s);

while (!r.empty())

system("pause");

return 1;

}

在這裡插入**片

用兩個棧(C 實現插入排序

用棧實現插入排序時,我們先將存放該資料的棧排序到另乙個棧中,最後在將另外乙個棧的內容倒放到當前棧中。圖如下 實現 pragma once template class astack astack destructor void clear reinitialize void push const e...

插入排序C

變數 i 1.代表待插入數字的下標 preindex.代表前乙個元素的下標 length.代表陣列的長度 排序過程 arr 0 跳過,從arr 1 開始,每乙個數都和它前面的數字比較。while iarr i 那麼前大後小,亂序 arr preindex 1 current i include us...

c 插入排序

從整個待排序列中選出乙個元素插入到已經有序的子串行中去,得到乙個有序的 元素加一的子串行,直到整個序列的待插入元素為0,則整個序列全部有序。在實際的演算法中,我們經常選擇序列的第乙個元素作為有序序列 因為乙個元素肯定是有序的 我們逐漸將後面的元素插入到前面的有序序列中,直到整個序列有序。簡單插入排序...