JAVA C语言 排序方法模板

swap函数使用方法

swap:交换两个变量的值

类似三变量交换法

/*
 * 实参传形参时,
 * 形参临时复制实参的存储空间,
 * 在临时分配的空间对a,b进行改变,
 * 函数执行完成后,形参分配的空间自动释放,
 * 最终,形参所做的任何变化对实参无影响,
 * a与b的值换交换不成功
 */
void swap(int a,int b) 
{
	int temp;

	temp = a;

	a = b;

	b = temp;

}  

运行如下👇 变量没交换成功

5 2
a=5, b=2
result of swap_1:       a=5, b=2

指针传参


//指针传参
#include <stdio.h>
void swap_4(int *a, int *b);

int main() {
	int a,b;
	scanf("%d%d",&a,&b);
	printf("a=%d, b=%d\n", a, b);
	swap_4(&a, &b);
	printf("result of swap:\ta=%d, b=%d\n", a, b);
	return 0;
}


void swap_4(int *a, int *b) {
	int temp;

	temp = *a;

	*a = *b;

	*b = temp;

}

运行如下👇

5 3
a=5, b=3
result of swap: a=3, b=5

快速排序—填坑法思想

在这里插入图片描述

难点:如何找基准?

在这里插入图片描述

JAVA 核心代码

在这里插入图片描述
在这里插入图片描述

快速排序算法

//快速排序算法
int Partition(int *r,int left,int right)
{
	int pivot;//枢轴 
	pivot=r[left];//从枢轴从左开始 
	
	while(left<right)//挖坑填数 
	{
		while(left<right&&r[right]>=pivot)//右:找比pivot小的数(枢轴从左边开始,就先处理右边;否则相反) 
		{
			right--;
		}
		r[left]=r[right];
		
		while(left<right&&r[left]<=pivot)//左:找比pivot大的数
		{
			left++;
		}
		r[right]=r[left];
	}
	
	//pivot插在中间 
	r[left]=pivot; //此时left==right,所以写成 r[right]=Pivot也可以 
	return left;  //同理,此处写成return right 也可 
}

void Quick_Sort(int *r,int left,int right)
{
	int PivotLoc;//枢轴的位置 
	
	if(left<right)//区间划分的条件,当left==right;即划分的区间只有一个元素时,退出递归!
	{
		PivotLoc=Partition(r,left,right);//第一趟快排,获取枢轴位置PivotLoc 
	    Quick_Sort(r,left,PivotLoc-1);   //递归处理枢轴左边 
	    Quick_Sort(r,PivotLoc+1,right);  //递归处理枢轴右边 
	} 
}

void QuickSort(int *r)//初始数据源的预输入 
{
	Quick_Sort(r,0,Maxsize-1);
}

总结

越来越依赖他人的代码,只想坐享其成,头脑不灵活。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值