C语言快速排序算法

原文思路http://c.biancheng.net/cpp/html/2741.html

很好用的排序汇总,但程序上有些许问题,上面有视频链接:http://blog.csdn.net/u014682691/article/details/50787366

自己改进自认为最精简的程序:

//快速排序算法
#include<stdio.h>
#include<stdlib.h>
#define N 20


int quick_once(int* array, int left, int right) {


	int temp = array[left];


	while (left < right) {


		while (temp <= array[right] && left < right)
			right--;


		if (left < right)
			array[left] = array[right];


		while (array[left] <= temp && left < right)
			left++;


		if (left < right)
			array[right] = array[left];


	}
	array[left] = temp;


	return left;
}


void quick_sort(int * array, int left, int right) {


	int pos;


	if (left >= right)
		return ;


	pos = quick_once(array, left, right);


	quick_sort(array, left, pos - 1);
	quick_sort(array, pos + 1, right);


	return ;
}


void print_array(int *array, int data) {


	int i;


	for (i = 0; i < N; i++) 
		printf("%5d ", array[i]);
	
	printf("\n");


	return ;
}


int main() {


	int num[N] = { 32,435,65,34,2,354,7,43,6757,36,56,234,786,98,67,4,561,21,22,44 };


	printf("排序前:\n");
	print_array(num, sizeof(num) / sizeof(int));


	quick_sort(num, 0, sizeof(num) / sizeof(int) - 1);


	printf("排序后:\n");
	print_array(num, sizeof(num) / sizeof(int));


	system("pause");
	return 0;
}




  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值