调整该数组中数字的顺序

<span style="color: rgb(51, 51, 51); font-family: arial, STHeiti, 'Microsoft YaHei', 宋体; font-size: 14px; line-height: 22.3999996185303px;">输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。</span>
class Solution {
public:
	//类似插入排序,找到什么地方插入,i为最右边的奇数的位置,j为i的左边偶数的位置
	void reOrderArray(vector<int> &array) {
		if (array.size() == 0) return;
		int i = array.size() - 1;
		int j = i;
		int temp = 0;
		while (1)
		{
			while (array[i] % 2 == 0)//找到奇数
			{
				i--;
				if (i<0) return;
			}
			if (i>1)
			{
				j = i - 1;
			}
			while (array[j] % 2 == 1)//找到偶数
			{
				j--;
				if (j<0) return;
			}
			//找到位置插入,奇数向前挪,将偶数挪到后面
			temp = array[j];
			int count = j;
			for (count; count < i; count++)
			{
				array[count] = array[count+1];
			}
			array[i] = temp;

		}
	}
};

JavaScript 提供了多种方法来调整数组元素的顺序。以下是几种常见的操作: ### 1. **反转数组** 使用 `reverse()` 方法可以将数组中的元素顺序完全颠倒。 ```javascript let arr = [1, 2, 3, 4]; arr.reverse(); console.log(arr); // 输出: [4, 3, 2, 1] ``` ### 2. **排序数组** 使用 `sort()` 方法可以根据指定规则对数组进行排序,默认按字母顺序或字符串形式排序数字。 - 按升序排列数字: ```javascript let numbers = [5, 2, 9, 1]; numbers.sort((a, b) => a - b); console.log(numbers); // 输出: [1, 2, 5, 9] ``` - 按降序排列数字: ```javascript let numbers = [5, 2, 9, 1]; numbers.sort((a, b) => b - a); console.log(numbers); // 输出: [9, 5, 2, 1] ``` ### 3. **自定义排序** 可以通过传递比较函数来自定义排序逻辑。例如,根据对象属性排序: ```javascript let users = [ { name: 'Alice', age: 25 }, { name: 'Bob', age: 20 }, { name: 'Charlie', age: 30 } ]; // 按年龄从小到大排序 users.sort((a, b) => a.age - b.age); console.log(users); ``` ### 4. **移动特定位置的元素** 如果你想把某个索引处的元素移到另一个地方,可以用组合的方式完成。比如使用 `splice()` 和 `concat()` 或者直接交换两个元素的位置。 - 移动第一个元素到最后: ```javascript let arr = [1, 2, 3, 4]; let firstElement = arr.shift(); // 删除并返回第一个元素 arr.push(firstElement); // 将其添加到数组末尾 console.log(arr); // 输出: [2, 3, 4, 1] ``` - 直接交换两个元素: ```javascript function swap(array, i, j) { [array[i], array[j]] = [array[j], array[i]]; } let arr = [1, 2, 3, 4]; swap(arr, 0, 3); // 交换第0位和第3位 console.log(arr); // 输出: [4, 2, 3, 1] ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值