まず、内部ソート:注文した配列の長さの緩やかな拡大の記録処理
その中でも、ヒルソート不安定
ソート1.直接挿入:O(N * N)、O(1)
シーケンシャルサーチに基づく方法をソート
レコードすでにソート順序付きリストLは、ソートされたリスト内のレコードの数を増やし、新しいを取得します
0より小さい場合には、シフト素子よりも大きいされた後部の前方に、素子の前方の位置を見つけるために、前方から、センチネルであろう、一前の要素よりも大きいか否かを判定する2から出発することを特徴とビット、あなたがその要素よりも小さいが見つかるまで、
この時点で、その要素よりも小さくなっている場所の後に、この要素は滞在の友人に場所をセンチネルすべきです。
平均的なケースの直接挿入ソートO(N2)の時間複雑。直接挿入ソートの追加スペースのレコードのみを必要とします。したがって、空間の複雑さはO(1)です。
ソート2.バイナリ挿入:O(N * N)
3.ヒルは、ソート:不安定なソート方法!!!
記録シーケンスいくつかのサブシーケンス、それぞれ、各サブ配列用の挿入ソート。
そしていることを確認する必要があり、最後のインクリメントdがソートに等しい1挿入ソート後、すなわち全配列を。
第二に、クイックソート:
その中でも、クイックソート不安定性の
並べ替え1.バブル:O(N * N)
2.クイックソート:Sortメソッド不安定!!!O(nlogn)
每次都将最前面的那个元素当成是关键字进行排序。
设置low和high辅助比较和对换
首先对无序的记录序列进行“一次快速排序”,之后分别对分割所得两个子序列“递归”进行快速排序。
时间复杂度分析:
若待排记录的初始状态为按关键字有序时,快速排序将蜕化为起泡排序,其时间复杂度为O(n2)。
三、选择排序
1.简单选择排序:O(n*n)
分析比较次数:
2.树型选择排序:O(nlogn)
首先对n个记录的关键字进行两两比较,然后在其中「n/2]个较小者之间再进行两两比较,如此重复,直至选出最小关键字的记录为止。
分析空间:
该方法占用空间较多,除需输出排序结果的n个单元外,尚需n-1个辅助单元。
3.堆排序:是不稳定的排序方法!!!O(nlogn)
四、归并排序
就是将两个或两个以上的有序表结合成一个新的有序表。
五、基数排列
1.多关键字的排列
分为MSD和LSD
前者是最高位优先行排列,需要分子序列
后者是最低位优先法,不需要进行子序列分配,而是直接对每个关键字都是整个序列参加排序
当对多关键字的记录序列进行LSD方法排序时,必须采用稳定的排序方法。
2.链式基数排列
总结:各种排序方法的分析
时间性能:
1.平均的时间性能
O(n*n)的称为简单排序方法,O(nlogn)的称为高效排序方法,O(dn)的称为基数排序方法
2.当待排序列关于关键字有序时:
3.
空间性能:(指的是所需要的辅助空间大小)
不稳定排序:
快速排序、希尔排序、堆排序:三个都是不稳定排序方法