栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Linux c 快速排序

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux c 快速排序

文章目录
  • 1、快速排序概述
  • 2、代码实现

1、快速排序概述
给你一组数
随机选一个数与最后一个数做交换 划分值,
小于这个数的都放左边,(和小于区的下一个数做交换,i++)
等于这个数的放中间(i++)
大于这个数的都放右边(和大于区的前数做交换i不动)
最后将这个数和大于这个数最左边的进行交换
依次执行这个过程
2、代码实现
#include 
#include 
#include 

void swap(int arr[],int L,int R)
{
	int temp = arr[L];
	arr[L] = arr[R];
	arr[R] = temp;
}

int* partition(int arr[],int L,int R)
{
	int less = L-1; // 左边界区
	int more = R;	// 右边界区
	while(L < more)	// 起始小于,右边界区
	{
		if(arr[L]arr[R])	// 大于划分值,右边界区左移,和当前数交换,当前数不移动
		{
			swap(arr,--more,L);
		}
		else	// 相等,当前数向前走
		{
			L++;
		}
	}
	swap(arr,more,R);	// 划分值和右边界区第一个数 交换
	int* new = (int *)malloc(8);	
	new[0] = less+1;	// 将相等区的最左边给他
	new[1] = more;	// 将相等区右边给他
	return new;	//最后放回
}

void quicksort(int arr[],int L,int R)
{
	if(L
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/312405.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号