快速排序算法

C语言实现快速排序算法

快速排序算法:
快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序
的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然
后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到
整个数据变成有序序列....

点这里看更详细的快速排序
在这里插入图片描述

C语言实现:
#include <stdio.h>
#include <stdlib.h>

void quick_short(int array[] , int left , int right);//声明函数

void quick_short(int array[] , int left , int right)
{
	int i = left;//数组array下标第一个元素指向i
	int j = right;//数组array下标最后一个元素指向j
	int temp;//用于两个数比较后交换
	int point;//定义一个基点,也就是array中间值,用于将array数组分为左右两个
	point = array[(left + right) / 2];

	//开始循环,如果左边的元素小于右边的元素,继续循环遍历
	while(i <= j)
	{
		//进行左边元素的比较,直到找到左边的元素大于基点
		while(array[i] < point)
		{
			i++;
		}
		//进行右边元素的比较,直到找到右边的元素大于基点
		while(array[j] > point)
		{
			j--;
		}

		//判断结束整个循环;如果满足,进行左右两个元素的交换
		if(i <= j)
		{
			temp = array[i];
			array[i] = array[j];
			array[j] = temp;
			i++;
			j--;
		}
	}

	if(left < j)
	{
		quick_short(array , left , j);//左边部分进行迭代递归
	}
	if(right > i)
	{
		quick_short(array , i , right);//右边部分进行迭代递归
	}
}


int main(void)
{
	int array[10] = {62 , 111 , 125 , 68 , 90 , 148 , 169 , 2 , 111 , 86};
	int length = sizeof(array)/sizeof(array[0]);//数组大小÷元素宽度=数组长度
	int i;//用于遍历输出排序好的数组

	quick_short(array , 0 , length-1);
	printf("Sequence after shorting :\n");

	for(i = 0;i<length;i++)
	{
		printf(" %d ",array[i]);
	}
	putchar('\n');

	return 0;
}

结果

Sequence after shorting :
 2  62  68  86  90  111  111  125  148  169

小白快乐学C,每天进步一点点,有什么有趣的记得分享哦!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值