剑指_调整数组顺序使奇数在前偶数在后
来源:互联网 发布:javascript 观察者模式 编辑:程序博客网 时间:2024/05/18 03:41
1.如何实现将整体向后移动一位?
将从begin到from-1总体向后移动一位,将begin位置保存from位置的数字
需要从后向前依次替换
int tmp=array[from];for(int i=from-1;i>=begin;i++){array[i+1]=array[i];}array[begin]=tmp;
2.采用快排的思想,利用头部指针和尾部指针。调整顺序,使奇数在前偶数在后,可以使用快排的思想,采用两个指针,头部一个指针,尾部一个指针,当第一个指针为偶数,第二个指针为奇数,交换。当两个指针相遇时退出循环
int begin=0;int end=len-1;while(begin<end){while(begin<end&&(begin&0x1)!=0){begin++;}while(begin<end&&(begin&0x1)==0){end--;}if(begin<end){int tmp=array[begin];array[begin]=array[end];array[end]=tmp;}}
但是快排不稳定,不能得到之前相对位置不变。
因此采用前后两个指针,找到偶数和奇数,之后整体向后移动交换。
public class Solution { public void reOrderArray(int [] array) {//采用前后指针 //前后指针的用法 if(array.length==0){ return; } int len=array.length; int begin=0; int from; while(begin<len){ while(begin<len&&(array[begin]&0x1)==1){ begin++; } from=begin+1; while(from<len&&(array[from]&0x1)==0){ from++; } if(from<len){//因为from可能是超过len而退出循环 int temp = array[from]; for(int i=begin;i<=from-1;i++){ array[i+] } for (int i = from - 1; i >= begin; i--) { array[i + 1] = array[i];//将begin到from-1总体向后移动一位,从后面开始 } array[begin++] = temp; }else{ break; } } }}
阅读全文
0 0
- 剑指_调整数组顺序使奇数在前偶数在后
- 调整数组元素顺序,奇数在前,偶数在后
- 剑指offer面试题14 调整数组元素顺序使得奇数在前半部分偶数在后半部分
- 调整数组元素的顺序使得奇数在前偶数在后并且各自有序
- 对一个整型数组做奇数在前偶数在后的顺序调整
- 数组:奇数在前,偶数在后,要求顺序不变
- 14_调整数组顺序使奇数位于偶数前面
- 20170928_调整数组顺序使奇数位于偶数前面
- 数组排序,奇数在前偶数在后
- 整数数组,奇数在前,偶数在后
- 题目:数组排序 奇数在前 偶数在后
- 有序数组:>奇数在前 偶数在后
- 数组排序,奇数在前,偶数在后
- 奇数在前偶数在后
- 调整数组顺序使奇数在前
- 调整数组顺序使奇数在前
- 数组:调整一个数组,把奇数放在前半部分,偶数在后半部分
- 剑指Offer_面试题14_调整数组顺序使奇数位于偶数前面
- 普通型母函数模板
- 最长递增子序列
- 找点(贪心)
- python 3.6 ,vs code 下import win32gui失败解决方案
- Java 十人过山洞
- 剑指_调整数组顺序使奇数在前偶数在后
- 机房收费系统-上机操作续
- Spring ldap ODM
- Android启动apk时主activity多次调用
- tar.gz
- React中bind以及this处理,获取当前操作的元素
- 【Idea】windows 10 使用idea ctrl+alt+↑ ↓ 快捷键,屏幕翻转
- 设计模式学习笔记(二)单例模式
- Ubuntu 16.04中安装cuDNN.torch