1.選擇排序
2.快速排序
3.希爾排序
4.堆排序
int a[m];
void sort()
}
複雜度為o(n^2)
int a[m];
void sort(int l,int r)
a[i]=key;
sort(l,i-1);
sort(i+1,r);
}
首先任意選取乙個資料(key)作為關鍵資料,將所有比它小的數都放到它前面,所有比它大的數都放到它後面,
然後再遞迴對這兩部分進行排序。
平均複雜度是o(nlogn)
最壞情況o(n^2)(有序陣列),為了避免這種情況,可以隨機取key的位置。
stl呼叫的sort函式比手打的快排一般要快
擴充套件用法:求序列中第k大數。
int a[m];
void sort()
a[k+step]=tmp;
}}
struct heap
w[p]=x;
}void pop()
w[p]=x;
}int top()
bool empty()
}q;
堆排序就是利用堆來實現排序堆能實現資料的插入和刪除都在logn的時間內完成
stl裡的priority_queue優先佇列
或者(make_heap, pop_heap, push_heap, >sort_heap)
也可以實現這一功能,不過手打的堆一般要快一些
複雜度:o(nlogn)
穩定與不穩定排序
首先,排序演算法的穩定性大家應該都知道,通俗地講就是能保證排序前2個相等的數其在序列的前後位置順序和排序後它們兩個的前後位置順序相同。在簡單形式化一下,如果ai aj,ai原來在位置前,排序後ai還是要在aj位置前。其次,說一下穩定性的好處。排序演算法如果是穩定的,那麼從乙個鍵上排序,然後再從另乙個...
排序演算法的穩定與不穩定
排序演算法的穩定性大家應該都知道,通俗地講就是能保證排序前 2個相等的數其在序列的前後位置順序和排序後它們兩個的前後位置順序相同。在簡單形式化一下,如果 ai aj,ai 原來在位置前,排序後 ai還是要在 aj位置前。其次,說一下穩定性的好處。排序演算法如果是穩定的,那麼從乙個鍵上排序,然後再從另...
排序演算法的穩定與不穩定
排序演算法的穩定與不穩定 非原創 首先,排序演算法的穩定性大家應該都知道,通俗地講就是能保證排序前 2個相等的數其在序列的前後位置順序和排序後它們兩個的前後位置順序相同。在簡單形式化一下,如果 ai aj,ai 原來在位置前,排序後 ai還是要在 aj位置前。其次,說一下穩定性的好處。排序演算法如果...