高速ソート

ヘッダ:STDLIB.H
使用法:ボイドのqsort(ボイド*ベース、 INT nelem個、INT幅、INT(* FCMP)(CONSTボイド*、CONSTボイド*));
パラメータ:最初のアドレスがソートされた配列であることが
ソートされた配列であることが2要素の数
スペース各素子3の大きさ
を順次順序を決定するための関数へのポインタ4

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define N 16
#define M 5
#define Q 1000

void init(int a[])
{
    int i;
    srand(time(NULL));
    for (i=0; i<N; i++) 
        a[i] = rand()%100;
}
void show(int a[])
{
    int i;
    for (i=0; i<N; i++) 
        printf("%3d", a[i]);
    printf("\n");
}
int compare(const void *ai, const void *aj)
{
    return *((int*)ai) - *((int*)aj);
}
int comparestr(const void *ai, const void *aj)
{
    return strcmp(*((char**)ai), *((char**)aj));
}

int main()
{
  /*
    int a[N];
    init(a);
    show(a);
    qsort(a, N, sizeof(int), compare);
    show(a);
*/
    int i,nline,p=0;
    char *lineptr[N];
    char buf[Q];
    for (nline=0; nline<M; nline++) 
    {        
        lineptr[nline] = &buf[p];
        scanf("%s", lineptr[nline]);
        p += strlen(lineptr[nline])+1;
    }
    qsort(lineptr, nline, sizeof(char*), comparestr);
    for (i=0; i<nline; i++) 
        printf("%s\n", lineptr[i]);

    return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define N 16
int a[N];

void init(int l, int r)
{
    int i;
    srand(time(NULL));
    for (i=l; i<=r; i++) 
        a[i] = rand()%100;
}

void show(int l, int r)
{
    int i;
    for (i=0; i<l; i++) printf("   ");
    for (i=l; i<=r; i++) printf("%3d", a[i]);
    printf("\n");
}

void swap(int i, int j) 
{
    int tmp = a[i];
    a[i] = a[j]; 
    a[j] = tmp;
}

int partition(int l, int r)
{
    int i, j;
    for (j=l, i=j+1; i<=r; i++)
        if (a[i]<a[l]) 
            swap(i, ++j);
    swap(l, j);
    //show(l, r);
    return j;
}

void sort(int l, int r)
{
    if (l>=r) 
        return;
    int k = partition(l, r);
    sort(l, k-1);
    sort(k+1, r);
}

int main()
{
    init(0, N-1);
    show(0, N-1);
    sort(0, N-1);
    show(0, N-1);
    return 0;
}
公開された25元の記事 ウォンの賞賛2 ビュー828

おすすめ

転載: blog.csdn.net/yangjinjingbj/article/details/104033286