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】