日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java sort 字符串_java实现6种字符串数组的排序(String array sort)

發(fā)布時(shí)間:2024/8/1 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java sort 字符串_java实现6种字符串数组的排序(String array sort) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

注意,本文不是字符串排序,是字符串?dāng)?shù)組的排序。

方法分別是:

1、低位優(yōu)先鍵索引排序

2、高位優(yōu)先建索引排序

3、java自帶排序(經(jīng)過調(diào)優(yōu)的歸并排序)

4、冒泡排序

5、快速排序

6、三向快速排序

時(shí)間復(fù)雜度:

最慢的肯定是冒泡,o(n的平方)

最快的是快速排序,平均 o(nlogn)

低位優(yōu)先,o(nw),w是字符串長度,在字符串長度較短情況下和快速排序時(shí)間應(yīng)該很接近

高位優(yōu)先,o(n) - o(nw)

三向快速排序,o(n) - o(nw)

本文中使用的例子是一個(gè)5757行的隨機(jī)字符串?dāng)?shù)組文本txt,實(shí)際測試結(jié)果:

低位優(yōu)先鍵索引排序:5 ms

高位優(yōu)先鍵索引排序:8 ms

java自帶排序:9 ms

冒泡排序:284 ms

快速排序:8 ms

三向快速排序:12 ms

穩(wěn)定的排序是:

低位優(yōu)先鍵索引排序

高位優(yōu)先建索引排序

歸并排序(java自帶的排序算法),速度還行,關(guān)鍵是保持循環(huán)情況下的順序穩(wěn)定

低位優(yōu)先:

public static void sort(string[] a, int w) {

int n = a.length;

int r = 256; // extend ascii alphabet size

string[] aux = new string[n];

for (int d = w-1; d >= 0; d--) {

int[] count = new int[r+1];

for (int i = 0; i < n; i++)

count[a[i].charat(d) + 1]++;

for (int r = 0; r < r; r++)

count[r+1] += count[r];

for (int i = 0; i < n; i++)

aux[count[a[i].charat(d)]++] = a[i];

for (int i = 0; i < n; i++)

a[i] = aux[i];

}

}

java自帶排序:

arrays.sort(arr);

冒泡:

public static void bubblingsort(string[] arr) {

int size = arr.length;

for(int i = 0; i

for (int j = i+1; j

if(arr[i].compareto(arr[j])>0) {

string temp = arr[i];

arr[i] = arr[j];

arr[j] = temp;

}

}

}

}

快速:

static void quicksort(string[] arr,int left,int right) //快速排序算法

{

string f,t;

int rtemp,ltemp;

ltemp=left;

rtemp=right;

f=arr[(left+right)/2]; //分界值

while(ltemp

{

while(arr[ltemp].compareto(f)<0)

{

++ltemp;

}

while(arr[rtemp].compareto(f)>0)

{

--rtemp;

}

if(ltemp<=rtemp)

{

t=arr[ltemp];

arr[ltemp]=arr[rtemp];

arr[rtemp]=t;

--rtemp;

++ltemp;

}

}

if(ltemp==rtemp)

{

ltemp++;

}

if(left

{

quicksort(arr,left,ltemp-1); //遞歸調(diào)用

}

if(ltemp

{

quicksort(arr,rtemp+1,right); //遞歸調(diào)用

}

}

三向快速:

驗(yàn)證代碼:

public static void main(string[] args) {

url path = sortwords.class.getresource("");

//不定長隨機(jī)單詞1000個(gè)

//file file = new file(path.getpath()+"/1000words.txt");

//長度為5的單詞,5757個(gè)

file file = new file(path.getpath()+"/words5.txt");

file file1 = new file(path.getpath()+"/words5.txt");

file file2 = new file(path.getpath()+"/words5.txt");

file file3 = new file(path.getpath()+"/words5.txt");

file file4 = new file(path.getpath()+"/words5.txt");

file file5 = new file(path.getpath()+"/words5.txt");

string[] arr = (string[])readfiledata.txt2list(file).toarray(new string[0]);

//排序前

for(string s : arr) {

//system.out.println(s.tostring());

}

//##############低位優(yōu)先

timemillis.setstart();

lsd.sort(arr,5);

timemillis.setend("低位優(yōu)先鍵索引排序:");

//排序后

for(string s : arr) {

//system.out.println(s.tostring());

}

//##############高位優(yōu)先

string[] arr1 = (string[])readfiledata.txt2list(file1).toarray(new string[0]);

timemillis.setstart();

msd.sort(arr1);

timemillis.setend("高位優(yōu)先鍵索引排序:");

//排序后

for(string s : arr1) {

//system.out.println(s.tostring());

}

//##############java自帶排序

string[] arr2 = (string[])readfiledata.txt2list(file2).toarray(new string[0]);

timemillis.setstart();

arrays.sort(arr2);

timemillis.setend("java自帶排序:");

//排序后

for(object s : arr2) {

//system.out.println(s.tostring());

}

//##############冒泡排序

string[] arr3 = (string[])readfiledata.txt2list(file3).toarray(new string[0]);

timemillis.setstart();

bubblingsort(arr3);

timemillis.setend("冒泡排序:");

//排序后

for(string s : arr3) {

//system.out.println(s.tostring());

}

//##############快速排序

string[] arr4 = (string[])readfiledata.txt2list(file4).toarray(new string[0]);

timemillis.setstart();

quicksort(arr4,0,5756);

timemillis.setend("快速排序:");

//排序后

for(string s : arr4) {

//system.out.println(s.tostring());

}

//##############三向快速排序

string[] arr5 = (string[])readfiledata.txt2list(file5).toarray(new string[0]);

timemillis.setstart();

quick3string.sort(arr5);

timemillis.setend("三向快速排序:");

//排序后

for(string s : arr5) {

//system.out.println(s.tostring());

}

}

運(yùn)行多次結(jié)果相近:

低位優(yōu)先鍵索引排序:8 ms

高位優(yōu)先鍵索引排序:10 ms

java自帶排序:15 ms

冒泡排序:315 ms

快速排序:9 ms

三向快速排序:13 ms

用到的數(shù)據(jù)txt文件下載:

readfiledata幫助類:

import java.io.bufferedreader;

import java.io.file;

import java.io.filereader;

import java.util.arraylist;

import java.util.list;

public class readfiledata {

public static string txt2string(file file){

stringbuilder result = new stringbuilder();

try{

bufferedreader br = new bufferedreader(new filereader(file));

string s = null;

while((s = br.readline())!=null){

result.append(system.lineseparator()+s);

}

br.close();

}catch(exception e){

e.printstacktrace();

}

return result.tostring();

}

public static list txt2list(file file){

try{

bufferedreader br = new bufferedreader(new filereader(file));

list list = new arraylist();

string s;

while((s = br.readline())!=null){

list.add(s);

}

br.close();

return list;

}catch(exception e){

e.printstacktrace();

}

return null;

}

public static object[] txt2array(file file){

return txt2list(file).toarray();

}

}

參考書目:《算法 4th》

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持萬仟網(wǎng)。

希望與廣大網(wǎng)友互動(dòng)??

點(diǎn)此進(jìn)行留言吧!

總結(jié)

以上是生活随笔為你收集整理的java sort 字符串_java实现6种字符串数组的排序(String array sort)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费黄色在线播放 | 精品在线观看一区 | 成人小片| 啦啦啦免费高清视频在线观看 | 少妇熟女视频一区二区三区 | 韩日一区二区三区 | 在线观看www.| 成人av高清在线 | 日本网站免费 | 国产网站黄色 | 天堂网在线最新版www中文网 | 日本中文字幕有码 | 淫辱的世界(调教sm)by | 免费成人黄色网 | 亚洲精品乱码久久久久久久 | 日韩黄色免费网站 | 成年人黄色在线观看 | 亚洲AV无码片久久精品 | 国产亚洲精品久 | 日本免费黄色大片 | 免费av网址大全 | 久久精品视频3 | 看免费毛片 | 丰满大乳露双乳呻吟 | 成人免费毛片足控 | 免费av在线电影 | 久一国产 | 日韩精品人妻一区 | 91亚洲精品在线观看 | 欧美亚洲激情视频 | 美女少妇直播 | 精品国产三级片在线观看 | 久久精品视频2 | 美女扒开腿让男人操 | 精品无码国产一区二区三区51安 | 少妇一级淫片免费放播放 | 国产一区二区三区免费播放 | 91啦中文| 国产一级免费在线观看 | 91视频最新| 亚洲婷婷综合网 | 黄频网站在线观看 | 91网站在线免费看 | 亚洲一区二区三区高清 | 欧美激情国产日韩精品一区18 | 少妇人妻偷人精品一区二区 | 中文人妻一区二区三区 | 91色九色| 五月婷在线观看 | 午夜剧场免费观看 | 久章操| 91亚洲精品视频 | 国产乱码77777777 | gogo亚洲国模私拍人体 | 久久国产精品一区二区 | 免费在线观看av的网站 | 色播五月婷婷 | 91精品国产91久久久久久吃药 | 日韩人成| 亚洲精品少妇 | 亚洲欧美一区二区三区久久 | 亚洲精品粉嫩小泬20p | 国产在线麻豆精品观看 | 伊人久久国产精品 | 国产小视频在线免费观看 | 亚洲色图清纯唯美 | 日本小视频网站 | 美女久久久久久久 | 色站在线 | 一级欧美黄色片 | 久久久久国产精品国产 | 日韩视频一区二区三区在线播放免费观看 | 日韩一区在线观看视频 | 999视频| 天天摸天天做天天爽 | h视频亚洲 | 日韩免费一级片 | 成人午夜看片 | 久久久69| 国内久久 | 欧美福利网站 | 天天cao在线 | 色视频综合 | 少妇精品久久久一区二区三区 | 欧美粗又大 | 妞妞av| 91成年人视频 | 婷婷四房综合激情五月 | av黄色在线 | 最近中文字幕在线免费观看 | 国内精品视频在线 | 青青青青青操 | 久久久精品网 | 久草视频这里只有精品 | 邻居校草天天肉我h1v1 | 人成在线免费视频 | 欧洲人妻丰满av无码久久不卡 | 动漫av在线 | 精品九九久久 |