快速排序QuickSort 对于二维或者多维数组进行排序

本文介绍了如何针对二维数组应用快速排序算法,通过将二维数据转换为一维表示进行排序,适用于处理高维数组。示例展示了对坐标点按x轴、y轴依次排序的程序代码。
摘要由CSDN通过智能技术生成

    最近编程的时候遇到了各种各样的排序问题,很多时候由于数据量不大,就选择了最好理解最容易写的冒泡排序。随着数据量的增大。发现某些时候还是必须使用快排的,特别是有些时候,还要对高维数组进行排序。下面是我最近写的一个关于二维数组进行排序的快速排序的程序。


    程序的算法不是很规范。我就是对一维数组的排序进行了改变。思想不是在比较的时候进行两个数据的比较,而是讲二维的数据按照排序顺序的权重问题先进行了一个计算,转成了一个数字,从而使用一维数组的排序比较得出结果。


    按照这种排序的思想则可以实现对多维(数字)进行快速排序。比如三维的数组。我们可以计算出a[0]*100+a[1]*10+a[2]的结果来进行比较,确定是否进行交换。


    下面的示例是我写的对一些坐标进行排序。测试数据是:
14
2 1
6 6
4 2
2 5
2 6
2 7
3 4
6 1
6 2
2 3
6 3
6 4
6 5
6 7

参考程序如下:

 

#include <iostream>
using namespace std;

struct Zuobiao
{
	int x;
	int y;
}point[1000];

void QuickSort(Zuobiao a[],int low,int high)
{
	int i,j; 
	i=low; 
	j=high; 
	
	if(low>high)					//已经找完了
		return; 
	
	int temp = a[low].x*10+a[low].y;//将二维数组转换成一个能比较的数
	int temp_x =
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值