调整数组中数字顺序

来源:互联网 发布:qq清除数据后会怎样 编辑:程序博客网 时间:2024/06/05 07:51

一、题目

       输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

注意:使用当前数组实现,不能重新开辟一个同等长度的数组实现。

思路:要想实现相对顺序不变,就需要记录一下,已经排好序的奇数的位置以及又发现的奇数的位置。将已经排好序的奇数与发现的奇数之间的数据向后一定一个位置,给发现的奇数空出一个位置。

二、算法实现

class Demo{ public static void main(String[] args){int[] arr={4,2,1,5,7,6,9,3};reOrderArray(arr);print(arr);}// 打印数组public static void print(int[] arr){for(int i=0;i<arr.length;i++){System.out.print(arr[i]+" ");}System.out.println();}// 数组重排    public static void reOrderArray(int [] array) {int m=0;//记录排好序的奇数的位置int j=0;//记录第一个奇数的位置,将第一个奇数排在数组中第一个位置for(int i=0;i<array.length;i++){if(array[i]%2==1){int temp=array[i];int ti=i;for(;ti>0;ti--){array[ti]=array[ti-1];//将第一个奇数之前的所有元素往后移一个位置}array[0]=temp;j=i;break;}}for(j++;j<array.length;j++){if(array[j]%2==1){int temp=array[j];int tj=j;m++;      //将array[m]位置空出来 留着放奇数,将元素后移一个位置for(;tj>m;tj--){array[tj]=array[tj-1];}array[m]=temp;}}}}


阅读全文
0 0
原创粉丝点击