php 二维数组排序比较 1 —— 冒泡排序法

方法函数


function bubble_sort(&$sort,&$a,$type='asc'){//默认为正序排列
	$len = count($a);
	if($type=='desc'){
		//从大到小,倒序排列
		for($i=1;$i<$len;$i++)
		{
			for($j=$len-1;$j>=$i;$j--)
			{
				
				if($a[$j]>$a[$j-1])
				{
					$x=$a[$j];
					$a[$j]=$a[$j-1];
					$a[$j-1]=$x;
					
					$y = $sort[$j];
					$sort[$j] = $sort[$j-1];
					$sort[$j-1] = $y;
				}
			}
		}
	}else{
		//从小到大,正序排列
		for($i=1;$i<$len;$i++)
		{
			for($j=$len-1;$j>=$i;$j--)
			{
				if($a[$j]<$a[$j-1])
				{
					$x=$a[$j];
					$a[$j]=$a[$j-1];
					$a[$j-1]=$x;
					
					$y = $sort[$j];
					$sort[$j] = $sort[$j-1];
					$sort[$j-1] = $y;
				}
			}
		}
	}
	return $sort;
}

调用函数排序


$sort 是一个二维数组

$a = Array();

foreach($sort as $key=>$val){
	$a[] = $val['created_at'];//$a是$sort的其中一个字段
}

var_dump(bubble_sort($sort,$a,'asc'));//正序

//var_dump(bubble_sort($sort,$a,'desc'));//倒序

 


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
冒泡排序是一种简单的排序算法,它的基本思想是通过相邻元素之间的比较和交换来把小的数交换到数组的前面,大的数交换到数组的后面。对于二维数组,我们可以按照一维数组的方式进行排序,只需要在比较和交换的时候,将二维数组的每一行看作一个一维数组即可。 下面是使用冒泡法对二维数组进行排序的示例代码: ```c #include <stdio.h> #define ROW 3 #define COL 4 void bubble_sort(int arr[][COL], int row) { int i, j, k, temp; for (i = 0; i < row; i++) { for (j = 0; j < COL - 1; j++) { for (k = 0; k < COL - j - 1; k++) { if (arr[i][k] > arr[i][k + 1]) { temp = arr[i][k]; arr[i][k] = arr[i][k + 1]; arr[i][k + 1] = temp; } } } } } int main() { int arr[ROW][COL] = {{3, 2, 1, 4}, {6, 5, 8, 7}, {9, 10, 11, 12}}; int i, j; printf("排序前的数组:\n"); for (i = 0; i < ROW; i++) { for (j = 0; j < COL; j++) { printf("%d ", arr[i][j]); } printf("\n"); } bubble_sort(arr, ROW); printf("排序后的数组:\n"); for (i = 0; i < ROW; i++) { for (j = 0; j < COL; j++) { printf("%d ", arr[i][j]); } printf("\n"); } return 0; } ``` 在上面的代码中,我们定义了一个名为`bubble_sort`的函数,它接受一个二维数组和数组的行数作为参数,使用冒泡法对二维数组进行排序。在`main`函数中,我们定义了一个3行4列的二维数组,并将其输出到屏幕上。然后调用`bubble_sort`函数对数组进行排序,并将排序后的数组输出到屏幕上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值