排列函数

递归生成序列数组与字符串
本文介绍了一段PHP代码,展示了如何通过递归函数生成序列数组和字符串,包括使用数组去重和排序技巧。
<?php function getSequenceAry($arr) { if (count($arr) == 1) { return array($arr); } $arrRet = array(); foreach ($arr as $k => $v) { $arr2 = $arr; unset($arr2[$k]); $arrOrderList = getSequenceAry($arr2); foreach ($arrOrderList as $order) { array_unshift($order, $v); $arrRet[] = $order; } } return $arrRet; } function getSequenceStr($arr) { if (count($arr) == 1) { return $arr; } $arrRet = array(); foreach ($arr as $k => $v) { $arr2 = $arr; unset($arr2[$k]); $arrOrderList = getSequenceStr($arr2); foreach ($arrOrderList as $order) { $arrRet[] = $v . $order; } } return $arrRet; } print_r(getSequenceAry(array(1,2,3))); print_r(getSequenceStr(array(1,2,3)));
定义升序排列函数可以采用不同的编程语言和算法。以下是几种常见的实现方式: #### Python 自定义排序函数 在 Python 中,可以使用 `sorted` 函数结合 `lambda` 表达式来实现升序排列: ```python a = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] # 正序排列 result = sorted(a, key=lambda x: x) print("正序排列:", result) ``` 这里使用 `lambda` 表达式 `lambda x: x` 作为 `sorted` 函数的 `key` 参数,实现了列表元素的升序排列。也可以使用自定义函数来实现,原理与 `lambda` 表达式类似 [^2]。 #### JavaScript 自定义排序函数 在 JavaScript 中,可以使用数组的 `sort` 方法,并传入一个自定义的比较函数来实现升序排列: ```javascript var example = [4, 6, 1, 40, 7, 5, 9, 3]; function sort_num(x, y) { return x - y; // x - y 为升序,y - x 为降序 } var re = example.sort(sort_num); console.log(re); ``` 在调用 `sort` 方法时,将 `sort_num` 函数传入,实现了数组元素的升序排列 [^3]。 #### C 语言实现冒泡排序 冒泡排序是一种简单的排序算法,以下是使用 C 语言实现的冒泡排序函数: ```c #include <stdio.h> void bubble_sort(int arr[], int n) { int i, j, temp; for (i = 0; i < n - 1; i++) { for (j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } int main() { int arr[] = {4, 6, 1, 40, 7, 5, 9, 3}; int n = sizeof(arr) / sizeof(arr[0]); bubble_sort(arr, n); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0; } ``` 该函数通过多次比较和交换相邻元素的位置,将数组元素按升序排列
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值