c_cpp 快速排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 快速排序相关的知识,希望对你有一定的参考价值。
/* クイックソート */
#include <stdio.h>
#include <stdlib.h>
#define swap(type, x, y) do { type t = x; x = y; y = t; } while (0)
/*--- クイックソート ---*/
void quick(int a[], int left, int right)
{
int pl = left; /* 左カーソル */
int pr = right; /* 右カーソル */
int x = a[(pl + pr) / 2]; /* 枢軸は中央の要素 */
do {
while (a[pl] < x) pl++;
while (a[pr] > x) pr--;
if (pl <= pr) {
swap(int, a[pl], a[pr]);
pl++;
pr--;
}
} while (pl <= pr);
if (left < pr) quick(a, left, pr);
if (pl < right) quick(a, pl, right);
}
int main(void)
{
int i, nx;
int *x; /* 配列の先頭要素へのポインタ */
puts("クイックソート");
printf("要素数 : ");
scanf("%d", &nx);
x = calloc(nx, sizeof(int));
for (i = 0; i < nx; i++) {
printf("x[%d] : ", i);
scanf("%d", &x[i]);
}
quick(x, 0, nx - 1); /* 配列xをクイックソート */
puts("昇順にソートしました。");
for (i = 0; i < nx; i++)
printf("x[%d] = %d\n", i, x[i]);
free(x); /* 配列を解放 */
return 0;
}
以上是关于c_cpp 快速排序的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 快速排序
c_cpp 快速排序
c_cpp 快速排序
c_cpp 快速排序
c_cpp 快速排序的.cpp
c_cpp 【分治法】快速排序【2.8】