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

    在《编程珠玑》上看到的,开篇第一个问题,有很多数,小于一个MAXNUM,没有重复的,怎么排序最快。

    答案是位图排序. 如果某一位不为0,那么这一位存代表一个数,位数(在序列中的位置)代表这个数。

    比方说这些数都存在数组a,然后利用一个数组b,b初始状态各位都为0,然后读取a,如果a[1]=2,那么b[2]为1,a[3]=6,那么b[6]=1。

    实现如下:

     1 #include <iostream>
     2 #include <fstream>
     3 #include<stdlib.h>
     4 #include<vector>
     5 #define MAXNUM 200
     6 int Isood(int n);
     7 
     8 using namespace std;
     9 
    10 
    11 int main(void)
    12 {
    13     vector<int> v1,v2;
    14     int n;
    15     cin>>n;
    16     int m;
    17     m=MAXNUM;
    18     while(n)
    19     {
    20         int t;
    21         cin>>t;
    22         v1.push_back(t);
    23         n--;
    24     }
    25     
    26     while(m)
    27     {
    28         v2.push_back(0);
    29         m--;
    30     }
    31     
    32     for(int i=0;i<v1.size();i++)
    33     {
    34         v2[v1[i]-1]=1;
    35     }
    36     
    37     for(int i=0;i<v2.size();i++)
    38     {
    39         if(v2[i])
    40         {
    41             cout<<i+1;+
    42         }
    43     }
    44     
    45 }
  • 相关阅读:
    模板模式变形
    理解volatitle带来的可见性
    数据库隔离级别
    Spring对POST内容进行处理的坑
    动态加载JS和CSS
    MySQL性能优化总结
    JS自执行匿名函数
    CDATA为何物?
    如何编写高效的jQuery代码
    war和war exploded区别
  • 原文地址:https://www.cnblogs.com/wswang/p/5143616.html
Copyright © 2011-2022 走看看