数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

取前1w个数据不超过4秒


发布日期:2018年05月11日
 
取前1w个数据不超过4秒
package nettest;

import javautilArrays;

import javautilDate;

import javautilRandom;

public class Top {

public static void main(String[] args) {

find()

}

public static void find( ) {//

int number = ;// 一亿个数

int maxnum = ;// 随机数最大值

int i = ;

int topnum = ;// 取最大的多少个

Date startTime = new Date()

Random random = new Random()

int[] top = new int[topnum];

for (i = ; i < topnum; i++) {

top[i] = Mathabs(randomnextInt(maxnum))//设置为随机数

// top[i] = getNum(i)

}

buildHeap(top toplength)// 构建最小堆 top[]为最小元素

for (i = topnum; i < number; i++) {

int currentNumber = Mathabs(randomnextInt(maxnum))//设置为随机数

// int currentNumber = getNum(i)

// 大于 top[]则交换currentNumber 重构最小堆

if (top[] < currentNumber) {

top[] = currentNumber;

shift(top toplength // 构建最小堆 top[]为最小元素

}

}

Systemoutprintln(ArraystoString(top))

sort(top)

Systemoutprintln(ArraystoString(top))

Date endTime = new Date()

Systemoutprintln(用了+(endTimegetTime() startTimegetTime())+毫秒

}

public static int getNum(int i){

return i;

}

//构造排序数组

public static void buildHeap(int[] array int from int len) {

int pos = (len ) / ;

for (int i = pos; i >= ; i) {

shift(array from len i)

}

}

/**

* @param array top数组

* @param from 开始

* @param len 数组长度

* @param pos 当前节点index

* */

public static void shift(int[] array int from int len int pos) {

// 保存该节点的值

int tmp = array[from + pos];

int index = pos * + ;// 得到当前pos节点的左节点

while (index < len)// 存在左节点

{

if (index + < len

&& array[from + index] > array[from + index + ])// 如果存在右节点

{

// 如果右边节点比左边节点小就和右边的比较

index += ;

}

if (tmp > array[from + index]) {

array[from + pos] = array[from + index];

pos = index;

index = pos * + ;

} else {

break;

}

}

// 最终全部置换完毕后 把临时变量赋给最后的节点

array[from + pos] = tmp;

}

public static void sort(int[] array){

for(int i = ; i < arraylength ; i++){

//当前值当作最小值

int min = array[i];

for(int j = i+; j < arraylength; j++){

if(min>array[j]){

//如果后面有比min值还小的就交换

min = array[j];

array[j] = array[i];

array[i] = min;

}

}

}

}

}               

上一篇:Enterprise Library-Data Block oracle

下一篇:c3po数据库连接池中取出连接