快速排序

本文详细介绍了一种高效的排序算法——快速排序。通过设定基准数并利用分治策略,该算法能够有效地对数组进行排序。文中提供了具体的步骤说明及C语言实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算法的大致流程:

1.创建两个变量i,j,i 指向第一个元素,j指向最后一个元素。整个过程中要保证i<j;

2.把数组里的第一元素作为基准数。k = data[0]

3.从j开始从右往左找,不断的递减j,把所有比k小的数移到k的左边。

4.从i+1元素向右找,递加i,将大于k的数移到k的右边。

5.直到 i=j,第一遍结束。

6.再将两边的分组重复这个过程,直到不能再分。

代码实现:

#include "stdafx.h"
#include<stdio.h>
#include<stdlib.h>

void swap(int &a, int &b)
{
	int k;
	k = a;
	a = b;
	b = k;
}

void quick_sort(int* data,int start,int end)
{
	if (start >= end)return;
	int i = start+1;
	int j = end;
	int k = data[start];
	while (i < j)
	{
		while (k < data[j]&&i < j)
			j--;
		while (k >data[i]&&i < j)
			i++;
		swap(data[i], data[j]);
	}
	if (data[start] > data[i])
		swap(data[start], data[i]);
	

	if(start <i)
		quick_sort(data, start, j - 1);
	if(i < end)
		quick_sort(data, j + 1, end);
}
void main()
{
	int data[10];
	printf("请输入10个数: \n");
	for (int i = 0;i < 10; i++)
		scanf_s("%d", &data[i]);
	quick_sort(data,0,9);
	printf("排序后的顺序: \n");
	for (int i = 0; i < 10;i++)
		printf("%5d", data[i]);
	printf("\n");
	system("pause");
	
}

结果展示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值