丝袜人妻一区二区三区_少妇福利无码视频_亚洲理论片在线观看_一级毛片国产A级片

當(dāng)前位置:首頁 > 科技數(shù)碼

排序算法總結(jié) 數(shù)據(jù)結(jié)構(gòu)_排序算法總結(jié)

作者fredal

https://www.jianshu.com/p/28d0f65aa6a1

所有內(nèi)部排序算法的匯總表

現(xiàn)在Tb1和Tb2都包含一些連續(xù)的字符串。我們?nèi)〕雒勘P磁帶的第一個順序字符串,并將它們組合起來,并將結(jié)果寫入Ta1,Ta1是一個雙長度的順序字符串。然后,我們從每盤磁帶中取出下一個連續(xù)的字符串,將其合并并寫入Ta2。繼續(xù)此過程,直到Tb1或Tb2為空。繼續(xù)這個過程,直到我們得到一個長度為n的連續(xù)字符串

如果我們有額外的磁帶,我們可以減少對輸入數(shù)據(jù)進(jìn)行排序的次數(shù),我們可以通過將基本的(2路)合并擴(kuò)展到(k路)合并來做到這一點。這叫做多路合并

上面討論的k- way合并方案需要使用2k磁帶。事實上,我們只需要使用k+1個磁帶就可以完成排序工作,這就是所謂的多階段合并。以三盤磁帶完成雙向合并為例:

這里序列的初始分布是個關(guān)鍵問題,其實斐波那契數(shù)是最好的。

對于序列的構(gòu)造,也可以采用排列選擇排序,采用堆的思想,有特殊的價值。

接下來,實現(xiàn)完整的外部排序

package com . fredal . structure;

import Java . io . file;

import Java . io . FileInputStream;

import Java . io . FileNotFoundException;

import Java . io . FileOutputStream;

import Java . io . IOexception;

import Java . util . ArrayList;

import Java . util . arrays;

import Java . util . iterator;

import Java . util . random;

publicclassExternalSort{

publicationstatintbuffer _ SIZE = 10;

公共文件排序(文件文件)拋出異常{

ArrayList<。文件>files = split(file);

returnprocess(文件);

}

//遞歸方法來合并列表,直到我們剩下一個

//單個合并列表

私有文件進(jìn)程(數(shù)組列表& lt文件>list)throwsIOException {

if(list.size() == 1) {

return list . get(0);

}

ArrayList<。文件>inter = newArrayList<。文件>();

for(迭代器& lt文件>itr = list . iterator();itr . HasNeXt();) {

file one = itr . next();

if(itr.hasNext()) {

file two = itr . next();

inter.add(合并(一、二));

} else{

returnone

}

}

return process(inter);

}

/**

*將原始文件分割成多個子文件。

*/

privateArrayList<。文件>分割(文件文件)拋出異常{

ArrayList<。文件>files = newArrayList & lt文件>();

int[]BUFFER = new int[BUFFER _ SIZE];

FileInputStream fr = NewFileInputStream(文件);

booleanfileComplete = false

while(!fileComplete) {

intindex = buffer.length

for(inti = 0;i <。緩沖區(qū)長度& amp& amp!fileCompletei++) {

buffer[I]= ReadInt(fr);

if(buffer[i] == - 1) {

fileComplete = true

index = I;

}

}

if(緩沖區(qū)[ 0]>;- 1) {

Arrays.sort(buffer,0,index);

File f = newFile( "set"+ newRandom()。nextInt());

file output stream writer = NewFileoutput stream(f);

for(intj = 0;j <。指數(shù);j++) {

writeInt(buffer[j],writer);

}

writer . close();

files . add(f);

}

}

fr . close();

returnfiles

}

/**

*將兩個已排序的文件合并為一個文件。

*

* @paramone

* @paramtwo

* @返回

* @throwsIOException

*/

私有文件合并(文件一,文件二)拋出異常{

FileInputStream fis 1 = NewFileInputStream(一);

file inputstream fis 2 = new file inputstream(兩個);

文件輸出= newFile("合并"+ newRandom()。nextInt());

file output stream OS = NewFileoutput stream(輸出);

inta = ReadInt(fis 1);

int b = ReadInt(fis 2);

booleanfinished = false

while(!完成){

if(a!=-1 & amp;& ampb!= - 1) {

if(a & lt;b) {

writeInt(a,OS);

a = ReadInt(fis 1);

} else{

writeInt(b,OS);

b = ReadInt(fis 2);

}

} else{

finished = true

}

if(a = =-1 & amp;& ampb!= - 1) {

writeInt(b,OS);

b = ReadInt(fis 2);

} else if(b = =-1 & amp;& ampa!= - 1) {

writeInt(a,OS);

a = ReadInt(fis 1);

}

}

OS . close();

returnoutput

}

privatevoidwriteInt(intvalue,合并文件輸出流)

throwsIOException {

merged . write(value);

merged . write(value & gt;>。8);

merged . write(value & gt;>。16);

merged . write(value & gt;>。24);

merged . flush();

}

private InTeradint(FileInputStream fis)throwSioException {

int buffer = fis . read();

if(緩沖== - 1) {

return-1;

}

buffer | =(fis . read()& lt;& lt8);

buffer | =(fis . read()& lt;& lt16);

buffer | =(fis . read()& lt;& lt24);

returnbuffer

}

/**

* @paramargs

* @throwsIOException

*/

public static void main(String[]args)throwSioException {

file file = New FIle(" main set ");

random random = new random(system . current timemillis());

file output stream fw = NewFileoutput stream(文件);

for(inti = 0;i <。BUFFER _ SIZE * 3;i++) {

int ger = random . Nextint();

ger = ger <。0?-ger:ger;

fw . write(ger);

fw . write(ger & gt;>。8);

fw . write(ger & gt;>。16);

fw . write(ger & gt;>。24);

}

fw . close();

ExternalSort sort = new ExternalSort();

system . out . println(" Original:");

dumpFile(排序,文件);

file f = sort . sort(file);

system . out . println(" Sorted:");

dumpFile(sort,f);

}

私有靜態(tài)無效轉(zhuǎn)儲文件(外部排序,文件f)

throwsFileNotFoundException,IOException {

FileInputStream fis = NewFileInputStream(f);

inti = sort . readint(fis);

while(i!= - 1) {

system . out . println(Integer . ToString(I));

I = sort . readint(fis);

}

}

}

長的

根據(jù)

接近

填充

1.《排序算法總結(jié) 數(shù)據(jù)結(jié)構(gòu)_排序算法總結(jié)》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識,僅代表作者本人觀點,與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。

2.《排序算法總結(jié) 數(shù)據(jù)結(jié)構(gòu)_排序算法總結(jié)》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進(jìn)行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。

3.文章轉(zhuǎn)載時請保留本站內(nèi)容來源地址,http://f99ss.com/keji/781960.html

上一篇

腹溝疝手術(shù)后幾天能走 腹股溝疝術(shù)后注意事項(成年人)

下一篇

雞爪怎么去骨 工人用嘴給雞爪去骨一天啃出1000斤 現(xiàn)場令人咋舌

qq閱讀在線閱讀 QQ閱讀本地TXT文件在哪里 怎么導(dǎo)入到閱讀列表

  • qq閱讀在線閱讀 QQ閱讀本地TXT文件在哪里 怎么導(dǎo)入到閱讀列表
  • qq閱讀在線閱讀 QQ閱讀本地TXT文件在哪里 怎么導(dǎo)入到閱讀列表
  • qq閱讀在線閱讀 QQ閱讀本地TXT文件在哪里 怎么導(dǎo)入到閱讀列表
產(chǎn)品質(zhì)量合格證 停止執(zhí)行 | 消防產(chǎn)品質(zhì)量合格證明文件等57項證明事項不再提交

產(chǎn)品質(zhì)量合格證 停止執(zhí)行 | 消防產(chǎn)品質(zhì)量合格證明文件等57項證明事項不再提交

中華人民共和國應(yīng)急管理部于2018年發(fā)布第12號公告,公布了被應(yīng)急管理部取消的部門規(guī)章設(shè)定的45項認(rèn)證項目和規(guī)范性文件設(shè)定的12項認(rèn)證項目,其中附件1《部門規(guī)章設(shè)定的認(rèn)證項目取消目錄》中有14項與消防相關(guān)。 其中, 根據(jù)《建設(shè)工程消防監(jiān)督管理條例》(公安部令第119...

兩個pdf合并成一個pdf 如何將多個pdf文件合并成一個pdf文件?

  • 兩個pdf合并成一個pdf 如何將多個pdf文件合并成一個pdf文件?
  • 兩個pdf合并成一個pdf 如何將多個pdf文件合并成一個pdf文件?
  • 兩個pdf合并成一個pdf 如何將多個pdf文件合并成一個pdf文件?

檔案文件管理 檔案內(nèi)行人---檔案管理分類

奧地利著名作家弗蘭茨·卡夫卡有一句名言,叫做“一切存檔!”這句話揭示了萬物的終極狀態(tài)。經(jīng)過多年的侵蝕和時間的磨損,所有的噪音都會消失。即使是最輝煌最神圣的東西,也會被時間之劍打碎,簡化成最純粹的物質(zhì)形式,重寫成最簡單的存在形式,也就是檔案。 用心、用心、專注、專業(yè)、...

衡水某高中要求寒假“朝五晚十”穿校服上網(wǎng)課?教育局:正在起草禁止文件

  • 衡水某高中要求寒假“朝五晚十”穿校服上網(wǎng)課?教育局:正在起草禁止文件
  • 衡水某高中要求寒假“朝五晚十”穿校服上網(wǎng)課?教育局:正在起草禁止文件
  • 衡水某高中要求寒假“朝五晚十”穿校服上網(wǎng)課?教育局:正在起草禁止文件

pdf怎樣轉(zhuǎn)換成word文檔 怎么快速把pdf文件轉(zhuǎn)換成word文檔?

  • pdf怎樣轉(zhuǎn)換成word文檔 怎么快速把pdf文件轉(zhuǎn)換成word文檔?
  • pdf怎樣轉(zhuǎn)換成word文檔 怎么快速把pdf文件轉(zhuǎn)換成word文檔?
  • pdf怎樣轉(zhuǎn)換成word文檔 怎么快速把pdf文件轉(zhuǎn)換成word文檔?

pdf轉(zhuǎn)化為word軟件 怎么快速把pdf文件轉(zhuǎn)換成word文檔?

  • pdf轉(zhuǎn)化為word軟件 怎么快速把pdf文件轉(zhuǎn)換成word文檔?
  • pdf轉(zhuǎn)化為word軟件 怎么快速把pdf文件轉(zhuǎn)換成word文檔?
  • pdf轉(zhuǎn)化為word軟件 怎么快速把pdf文件轉(zhuǎn)換成word文檔?

圖片轉(zhuǎn)換成excel文件 在線將Excel表格轉(zhuǎn)換成JPG圖片格式

  • 圖片轉(zhuǎn)換成excel文件 在線將Excel表格轉(zhuǎn)換成JPG圖片格式
  • 圖片轉(zhuǎn)換成excel文件 在線將Excel表格轉(zhuǎn)換成JPG圖片格式
  • 圖片轉(zhuǎn)換成excel文件 在線將Excel表格轉(zhuǎn)換成JPG圖片格式