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

一文就够:快速排序算法的实现

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

一文就够:快速排序算法的实现

快速排序算法的实现
  • 算法讲解
  • 代码实现

算法讲解

链接: 点击跳转BliBili

代码实现
#include 
#include 

void quickSort(int array[], int LEFT, int RIGHT) {
	if(LEFT >= RIGHT) {//表明只有一个数字了,默认有序,停止排序
		return;
	}

	int left = LEFT;//左下标
	int right = RIGHT;//右下标
	int pivot = array[left];//"轴"点,是一个值,不是一个下标

	while(left < right) {
		while(left < right && array[right] >= pivot) { //下标没重合&右下标值大于"轴"点=>并不需要移动
			right--;
		}

		if(left < right) { //下标没重合&右下标值小于"轴"点=>需要移动左下标处
			array[left] = array[right];
		}

		while(left < right && array[left] <= pivot) {
			left++;
		}

		if(left < right) {
			array[right] = array[left];
		}

		if(left >= right) {
			array[left] = pivot;
		}
	}

	quickSort(array, LEFT, right - 1);
	quickSort(array, right + 1, RIGHT);
}

int main() {
	int n, k;

	printf("输入n个数字,创建一个数组,并且进行升序排序...n");
	scanf("%d",&n);

	int array[n];

	for(int i = 0; i < n; i++) {
		scanf("%d",&k);
		array[i] = k;
	}

	quickSort(array, 0, n - 1);

	printf("快速排序后,结果为n");
	for(int i = 0; i < n; i++) {
		printf("%d ", array[i]);
	}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1008305.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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