請說出至少三種排序的思路,這三種排序的時(shí)間復(fù)雜度分別為
O(n*n)
O(n log2 n)
O(n + max)
1.O(n*n)
冒泡排序:比較相鄰的元素,如果第一個(gè)比第二個(gè)大,就交換他們兩個(gè),對每一對相鄰的元素做同樣的工作,從開始第一對到結(jié)尾最后一對,這步會讓后一位元素就是最大的數(shù),對所有元素重復(fù)以上步驟,除了最后一個(gè),直到?jīng)]有任何一堆數(shù)字需要比較
2.O(n log2 n)
快速排序:以一個(gè)元素為基準(zhǔn),重新排序數(shù)列,比基準(zhǔn)值小的元素放左邊,大的放右邊,然后在對左半邊和右半邊重復(fù)以上操作,直到只有一個(gè)數(shù)字為止
3.O(n + max)
基數(shù)排序:將所有待比較數(shù)值(正整數(shù))統(tǒng)一為同樣的數(shù)位長度,數(shù)位較短的數(shù)前面補(bǔ)零。然后,從最低位開始,依次進(jìn)行一次排序。這樣從最低位排序一直到最高位排序完成以后,數(shù)列就變成一個(gè)有序序列。