交换排序之快速排序

本文深入讲解了快速排序算法的基本思想及实现过程,采用分治策略,通过选择基准元素并进行分区,递归地对左右子数组进行排序,最终实现整个数组的有序排列。

基本思想:快速排序使用分治的思想,通过一趟排序将待排序列分割成两部分,其中一部分记录的关键字均比另一部分记录的关键字小。之后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。举例来说:
数列:5,2,4,9,3,8,7,1,6,0
①选一个基准,此处以第一位5位基准,然后将5与各个数相比较,比5大的数放在5的右边(注意,此时右边的数并不是一组有序的数,仅仅比5大而已),比5小的数放在5的左边(与上相似)
②使用递归算法,将5左边的数与右边的数分别单独看成一组新的数列,再执行①的步骤思想;直至结束。
我的排序思想便是如此,但具体的执行,还需考虑:
根据①的思想衍生出代码思路,先从右边遍历,再从左边遍历,即代码中的while循环。再根据②的思想分割数列递归运算,直到排序完成。
代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

/*快速排序*/
void quicksort(int *ttr,int left,int right)
{
	int i,j,temp,k;
	if(left > right)
	{
		return;
	}
	temp = ttr[left];//先记录下 基准数,以便最后归位
	i	 = left;
	j	 = right;
	while(i!=j)
	{
		while(ttr[j] >= temp && i<j)//从右向左依次查找
		{
			j--;
		}
		while(ttr[i] <= temp && i<j)//从左向右依次查找
		{
			i++;
		}
		if(i < j)  //如果符合条件,交换两数的位置,
		{
				 k = ttr[i];
			ttr[i] = ttr[j];	
			ttr[j] = k;
		}
	}
	ttr[left] = ttr[i];
	ttr[i] = temp;
	quicksort(ttr,left,i-1);
	quicksort(ttr,i+1,right);
}
//测试函数
int main()
{
	int str1[10] = {5,2,4,9,3,8,7,1,6,0};
	int integer,i;
	integer = sizeof(str1) / sizeof(int);
	quicksort(str1,0,integer-1);
	for(i = 0;i < integer;i++)
	{
		printf("%d\t",str1[i]);
	}
	printf("\n");
	system("pause");
	return 0;
}
多源动态最优潮流的分布鲁棒优化方法(IEEE118节点)(Matlab代码实现)内容概要:本文介绍了基于Matlab代码实现的多源动态最优潮流的分布鲁棒优化方法,适用于IEEE118节点电力系统。该方法结合两阶段鲁棒模型与确定性模型,旨在应对电力系统中多源输入(如可再生能源)的不确定性,提升系统运行的安全性与经济性。文中详细阐述了分布鲁棒优化的建模思路,包括不确定性集合的构建、目标函数的设计以及约束条件的处理,并通过Matlab编程实现算法求解,提供了完整的仿真流程与结果分析。此外,文档还列举了大量相关电力系统优化研究案例,涵盖微电网调度、电动汽车集群并网、需求响应、储能配置等多个方向,展示了其在实际工程中的广泛应用价值。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事能源系统优化工作的工程师。; 使用场景及目标:①用于研究高比例可再生能源接入背景下电力系统的动态最优潮流问题;②支撑科研工作中对分布鲁棒优化模型的复现与改进;③为电力系统调度、规划及运行决策提供理论支持与仿真工具。; 阅读建议:建议读者结合提供的Matlab代码与IEEE118节点系统参数进行实操演练,深入理解分布鲁棒优化的建模逻辑与求解过程,同时可参考文中提及的其他优化案例拓展研究思路。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值