😸

[C] qsort 関数

に公開

機能

配列を指定した順序でソートする関数[1]

使用例

1 3 4 5 7 と表示する

\n は改行を表す エスケープシーケンス[2]

コード

int arr[] = {5, 1, 7, 4, 3};
qsort(arr, 5, sizeof(int), cmp);
for(int i = 0; i < 5; i++) {
    printf("%d ", arr[i]);
}
全文
#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a, const void *b) {
    return *(int*)a - *(int*)b;
}
void main() {
    int arr[] = {5, 1, 7, 4, 3};
    qsort(arr, 5, sizeof(int), cmp);
    for(int i = 0; i < 5; i++) {
        printf("%d ", arr[i]);
    }
}

実行結果

1 3 4 5 7 

z a b c x を文字でソートし表示する

コード

char arr[] = {'z', 'a', 'c', 'x', 'b'};
qsort(arr, 5, sizeof(char), cmp_char);
for(int i = 0; i < 5; i++) {
    printf("%c ", arr[i]);
}
全文
#include <stdio.h>
#include <stdlib.h>
int cmp_char(const void *a, const void *b) {
    return *(char*)a - *(char*)b;
}
void main() {
    char arr[] = {'z', 'a', 'c', 'x', 'b'};
    qsort(arr, 5, sizeof(char), cmp_char);
    for(int i = 0; i < 5; i++) {
        printf("%c ", arr[i]);
    }
}

実行結果

a b c x z 
脚注
  1. 配列データを小さい順や大きい順などに順序付けする標準ライブラリ関数。比較のために関数ポインタを使う。 ↩︎

  2. 改行やタブなど、画面に表示されない制御文字のこと。 ↩︎

Discussion