#includeusingnamespace
std;
typedef
struct
node
node, *linklist;
void sort(linklist &l)
else p = p->next;
}tail =p;
p = tail->prior;
while (exchange&&p->prior !=head)
p = p->prior;//
直接交換數值要往後移動指標
} head =p;
}}void create(linklist &l, intn)}
void print(linklist &l)
cout
<< p->data <}int
main()
}return0;
}
基於雙向鍊錶的雙向氣泡排序法
描述有n個記錄儲存在帶頭結點的雙向鍊錶中,利用雙向氣泡排序法對其按上公升序進行排序,請寫出這種排序的演算法。(注:雙向氣泡排序即相鄰兩趟排序向相反方向冒泡)。
輸入多組資料,每組資料兩行。第一行為序列的長度n,第二行為序列的n個元素(元素之間用空格分隔,元素都為正整數)。當n等於0時,輸入結束。
輸出每組資料輸出一行,為從小到大排序後的序列。每兩個元素之間用空格隔開。
輸入樣例 1
54 5 3 2 9
61 3 5 7 9 2
0
輸出樣例 1
2 3 4 5 91 2 3 5 7 9
雙向氣泡排序
這是完全自主編碼,哈哈。但是思想還是書上先有的,但是沒有具體 下面是執行結果截圖,輸入的為23 45,2,15,9 冒牌排序流程如下,一次正向冒泡,從左至右。然後一次反向冒泡,從右至左。第一次把最大的記錄放到表尾,第二次將最小記錄放到表頭,如此反覆。pos 0 記錄無序序列的第乙個位置0,pos 1...
雙向氣泡排序
演算法思想 在正反兩個方向交替進行掃瞄,即第一趟把關鍵字最大的元素放到序列的最後面,第二趟把關鍵字最小的元素放到序列的最前面,如此反覆 演算法實現 跟普通冒泡差不多,就是多設兩個指標來控制邊界就可以了 include using namespace std void dobubblesort int...
氣泡排序 與 雙向氣泡排序
public class test if k 0 break last k public static void bidirectionalbubblesort int a last k for int m last m first m first k if first last break pub...