zoukankan      html  css  js  c++  java
  • 位排序

     1 /**
     2  * 位图排序
     3  */
     4 import java.util.Arrays;
     5 
     6 public class Test {
     7     public static void main(String[] args){
     8         int[] arr = new int[]{ 3, 6, 7, 13, 1, 0, 4, 2, 9, 8, 15, 11 };
     9         System.out.println(Arrays.toString(arr));
    10         System.out.println("================");
    11         BitSort.bitSort(arr, 15);
    12         System.out.println(Arrays.toString(arr));
    13     }
    14 }
    15 
    16 class BitSort{
    17     /**
    18      *
    19      * @param arr 待排序树组
    20      * @param maxValue 数组中最大值,用来确定位图数组大小
    21      */
    22     public static void bitSort(int[] arr, int maxValue){
    23         //位图数组大小为: maxValue/8-1,因为位图从0开始
    24         byte[] bitlist = new byte[maxValue / 8 + 1];
    25         for(int i = 0; i < arr.length; i++){
    26             //确定arr[i]所放的bitlist位置
    27             int index = arr[i] / 8;
    28             //arr[i]值为多少就在位图中左移多少, 通过或(|)操作来记录每个数据
    29             bitlist[index] = (byte)(bitlist[index] | (0x01 << (arr[i] % 8)));
    30         }
    31 
    32         int k = 0;
    33         for(int i = 0; i < bitlist.length; i++){
    34             //遍历bitlist的每一个位
    35             for(int j = 0; j < 8; j++){
    36                 if((0x01 & (bitlist[i] >> j)) == 1){
    37                     arr[k++] = i * 8 + j;
    38                 }
    39             }
    40         }
    41     }
    42 }
    View Code
  • 相关阅读:
    Linux GNOME桌面使用技巧大全
    联想旭日 C465A 开机白屏
    基础知识:编程的工作机制
    JavaCC 学习笔记
    笨办法学R编程(1)
    一些学习方法总结
    使用变量表示字、数字和值
    栈溢出2017doubly_dangerous
    栈溢出warmup_csaw_2016
    基础学习ret2text
  • 原文地址:https://www.cnblogs.com/Hr666/p/10403438.html
Copyright © 2011-2022 走看看