zoukankan      html  css  js  c++  java
  • 数组中的数字按某值划分为左边小、中间相等、右边大的形式

    题目:给一个数组arr=[2,7,9,3,1,8,5,2,5]  给定数字5,把数组中的数按照<5,=5,>5进行排列     --->arr=[2,2,3,1,   5,5,     8,9,7]

    代码:

    package Algorithms;
    
    /**
     * @author : zhang
     * @version : 1.0
     * @date : Create in 2021/8/11
     * @description :
     */
    public class Arr_SmallerEqualBigger {
        public static void main(String[] args) {
            int[] arr = { 2,7,9,3,1,8,5,2,5};
            arrPartition(arr,4); //2 2 1 3 8 5 9 5 7 
            for (int i = 0; i < arr.length; i++) {
                System.out.print(arr[i]+" ");
            }
        }
      
        public static void arrPartition(int[] arr,int pivot){
            int small =0;              //记录 <pivot部分的后一个数的下标)
            int big = arr.length-1;    //记录 >pivot部分的前一个下标
            int index = 0;         //控制数组下标前移
            while(index!= big){
                if(arr[index]<pivot){ 
                    swap(arr,small++,index++); 
                }else if(arr[index]==pivot){
                    index++; 
                }else{ 
                    swap(arr,big--,index); 
                }
            }
        }
    
        public static void swap(int[] arr,int a,int b){
            int temp = arr[a];
            arr[a]=arr[b];
            arr[b]=temp;
        }
    }

    图解:

  • 相关阅读:
    HMM MEMM CRF 差别 联系
    JSTL简单介绍
    java基础&amp;&amp;高薪面试
    oracle-Normal
    oracle-Oradim
    oralce管理命令
    oracle默认日期格式
    oralce默认语言
    oracle国家字符集
    oracle-字符集
  • 原文地址:https://www.cnblogs.com/zh-xiaoyuan/p/15127772.html
Copyright © 2011-2022 走看看