忍者ブログ
ADMIN / ENTRY
カレンダー
02 2024/03 04
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
新刊カレンダー
ブログ内検索
プロフィール
HN:
Nina.A
性別:
男性
趣味:
麻雀、ラノベ、漫画
自己紹介:
MJ4や天鳳等でよく麻雀やってます。もし会ったらよろしくです。
ブログは単なるメモ帳となる予定。
C/C++勉強中の大学生雑記
<<  2024/03  >>
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 
[6]  [5]  [4]  [3]  [2]  [1] 
2024/03/19  19:31:17
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2008/11/03  13:37:38

よく使うクイックソートのプログラムを一応張っておく。もう憶えたけど念のため。

void QuickSort(int data[], const int low, const int high){
    if(low < high){
        // ピボットの決定
        int x = (data[low] + data[high] + data[(low+high)/2])/3;

        int left = low - 1, right = high + 1;
        while(left <= right){
            while(data[++left] < x);
            while(data[--right] > x);
            if(left < right) Swap(&data[left], &data[right]);
        }
        QuickSort(data, low, right);
        QuickSort(data, left, high);
    }
}
アルゴリズムは「クイックソート:アルゴリズム」Arrrowに分かりやすい説明がある。

C++ならSTLのalgorithmを利用したほうが早い。

#include <algorithm>

int main(){
    int array[10] = { 1, 6, 4, 3, 5, 9, 8, 2, 7, 0};
    std::sort(array, array+10);
    for(int i = 0; i < 10; ++i){
        std::cout << array[i] << ", ";
    }
    std::cout << std::endl;
    return 0;
}

ちなみに、降順にソートするには、

sort(array, array+10, greater<int>());
のようにすればいいらしい(参考Extrernal Link)。
PR
この記事にコメントする
お名前:
タイトル:
文字色:
メールアドレス:
URL:
コメント:
パスワード:   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
Powerd by NINJAブログ / Designed by SUSH
Copyright © メモ帳ブログ All Rights Reserved.
忍者ブログ [PR]