ソートアルゴリズムまとめ(c言語)⑦クイックソート
12350 ワード
クイックソート
Quick Sortは、20世紀の10大アルゴリズムの一つと呼ばれ、本格的なソートの大物が登場!
クイックソートは、交換ソートクラスに属するバブルソートのアップグレードと見なすことができます.ただし,速い列は記録の比較と移動距離を大きくし,比較と交換回数を減少させた.
高速ソートの基本思想:1回のソートによって並べ替えられるレコードを独立した2つの部分に分割し、そのうちの一部のキーワードは他の部分が記録したキーワードよりも小さい場合、この2つの部分のレコードをそれぞれソートして、シーケンス全体の秩序化の目的を達成することができる.
最適では高速配列の時間複雑度はO(nlogn)であり,最悪では時間複雑度はO(n*n)である.残念なことに、高速ソートは不安定なソートです.
ソートされるデータは、シーケンステーブルに保存されます.データの格納は0からではなく、1から開始することを選択します.コードは「大話データ構造」に参照されます.
初期設定
ちくじひょうこうぞうたい
出力順序テーブル
入力関数
swap関数
簡単なクイックソート
オプティマイズのクイックソート
シリーズリンク
前のソートアルゴリズム:⑥集計ソート次のソートアルゴリズム:なし
Quick Sortは、20世紀の10大アルゴリズムの一つと呼ばれ、本格的なソートの大物が登場!
クイックソートは、交換ソートクラスに属するバブルソートのアップグレードと見なすことができます.ただし,速い列は記録の比較と移動距離を大きくし,比較と交換回数を減少させた.
高速ソートの基本思想:1回のソートによって並べ替えられるレコードを独立した2つの部分に分割し、そのうちの一部のキーワードは他の部分が記録したキーワードよりも小さい場合、この2つの部分のレコードをそれぞれソートして、シーケンス全体の秩序化の目的を達成することができる.
最適では高速配列の時間複雑度はO(nlogn)であり,最悪では時間複雑度はO(n*n)である.残念なことに、高速ソートは不安定なソートです.
ソートされるデータは、シーケンステーブルに保存されます.データの格納は0からではなく、1から開始することを選択します.コードは「大話データ構造」に参照されます.
初期設定
#include<stdio.h>
#include<malloc.h>
#define MAXSIZE 20 //
#define N 10 //
ちくじひょうこうぞうたい
typedef struct
{
int data[MAXSIZE + 1];
int len; //
}Sqlist;
出力順序テーブル
void Show(Sqlist L)
{
int i;
for (i = 1; i < L.len; ++i)
{
printf("%d,", L.data[i]);
}
printf("%d
", L.data[i]);
}
入力関数
void Input(Sqlist* lp)
{
int d[N] = { 9, 1, 5, 8, 3, 0, 7, 4, 6, 2 };
for (int i = 0; i < N; i++)
lp->data[i + 1] = d[i];
lp->len = N;
}
swap関数
void Swap(Sqlist* lp,int a, int b)
{
int t = lp->data[a];
lp->data[a] = lp->data[b];
lp->data[b] = t;
}
簡単なクイックソート
int Partition(Sqlist* lp, int low, int high)
{
int pivotkey;
pivotkey = lp->data[low];//
while (low < high)//
{
while (low < high && lp->data[high] >= pivotkey)
high--;
Swap(lp, low, high);//
while (low < high && lp->data[low] <= pivotkey)
low++;
Swap(lp, low, high);//
}
return low;//
}
void QSort(Sqlist* lp, int low, int high)
{
int pivot;
if (low < high)
{
pivot = Partition(lp, low, high);// , pivot
QSort(lp, low, pivot - 1);//
QSort(lp, pivot + 1, high);//
}
}
void QuickSort(Sqlist* lp)
{
QSort(lp, 1, lp->len);
}
オプティマイズのクイックソート
シリーズリンク
前のソートアルゴリズム:⑥集計ソート次のソートアルゴリズム:なし