插入排序SDUT

2021-10-07 03:28:45 字數 1187 閱讀 8536

插入排序

description

現有 n 個從小到大排列的數組成的序列。需要對這個序列進行 c 次操作。

每次操作有兩種型別:

操作 1:插入乙個數 v 到序列中,並保持有序。

操作 2:輸出當前的序列。

blue 並不太擅長序列操作,所以他想來請求你的幫助,你能幫助他完成這個任務嗎?

input

輸入資料有多組(資料組數不超過 30),到 eof 結束。

對於每組資料:

第 1 行輸入乙個整數 n (1 <= n <= 10^5),表示初始的有序序列中數字的個數。

第 2 行輸入 n 個用空格隔開的整數 ai (0 <= ai <= 10^6),表示初始序列。

第 3 行輸入乙個整數 c (1 <= c <= 1000),表示有 c 次操作。

接下來有 c 行,每行表示一次操作:

如果操作型別為 1,則輸入格式為 「1 v」,其中 v (0 <= v <= 1000) 表示要插入到序列的數。

如果操作型別為 2,則輸入格式為 「2」。

output

對於每組資料中的每次型別為 2 的操作,輸出一行,表示當前的序列,每個數之間用空格隔開。

sample

input

51 2 2 3 5

51 0

21 3

1 72

output

0 1 2 2 3 5

0 1 2 2 3 3 5 7

#include #include #include typedef struct node

node;

node *creat(int n)

return head;

}node * output(node *head)

}return head;

}void fre(node *head)

}node *ins(node *head, int v)

else q=q->next;

}p->next=q->next;

q->next=p;

return head;

}int main()

if(m==2)

output(head);

}fre(head);

}return 0;

}

SDUT 3712 插入排序

現有 n 個從小到大排列的數組成的序列。需要對這個序列進行 c 次操作。每次操作有兩種型別 操作 1 插入乙個數 v 到序列中,並保持有序。操作 2 輸出當前的序列。blue 並不太擅長序列操作,所以他想來請求你的幫助,你能幫助他完成這個任務嗎?輸入資料有多組 資料組數不超過 30 到 eof 結束...

插入排序 折半插入排序

折半插入排序 binary insertion sort 直接插入排序採用順序查詢法查詢當前記錄在已排好序的序列中插入位置,這個 查詢 操作可利用 折半查詢 來實 現,由此進行的插入排序稱之為折半插入排序 binary insertion sort 演算法思想 1 將待排序的記錄存放在陣列r 1.n...

插入排序 折半插入排序

折半插入排序是基於直接插入排序的優化。直接插入排序 將第i個元素插入時,通過折半查詢的方式,來查詢第i個元素合適的位置。當0 i 1 位置上的元素都已經排序ok,現需要插入第i個元素,設其值為temp 令low 0,high i,mid high low 2。那麼temp可能插入的位置是 low h...