真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java算法和代碼,JAVA 算法

java中排序算法代碼

package temp;

創(chuàng)新互聯(lián)長期為成百上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為宣威企業(yè)提供專業(yè)的做網(wǎng)站、成都網(wǎng)站制作,宣威網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

import sun.misc.Sort;

/**

* @author zengjl

* @version 1.0

* @since 2007-08-22

* @Des java幾種基本排序方法

*/

/**

* SortUtil:排序方法

* 關(guān)于對(duì)排序方法的選擇:這告訴我們,什么時(shí)候用什么排序最好。當(dāng)人們渴望先知道排在前面的是誰時(shí),

* 我們用選擇排序;當(dāng)我們不斷拿到新的數(shù)并想保持已有的數(shù)始終有序時(shí),我們用插入排序;當(dāng)給出的數(shù)

* 列已經(jīng)比較有序,只需要小幅度的調(diào)整一下時(shí),我們用冒泡排序。

*/

public class SortUtil extends Sort {

/**

* 插入排序法

* @param data

* @Des 插入排序(Insertion Sort)是,每次從數(shù)列中取一個(gè)還沒有取出過的數(shù),并按照大小關(guān)系插入到已經(jīng)取出的數(shù)中使得已經(jīng)取出的數(shù)仍然有序。

*/

public int[] insertSort(int[] data) {

1/11頁

int temp;

for (int i = 1; i data.length; i++) {

for (int j = i; (j 0) (data[j] data[j - 1]); j--) {

swap(data, j, j - 1);

}

}

return data;

}

/**

* 冒泡排序法

* @param data

* @return

* @Des 冒泡排序(Bubble Sort)分為若干趟進(jìn)行,每一趟排序從前往后比較每兩個(gè)相鄰的元素的大?。ㄒ虼艘惶伺判蛞容^n-1對(duì)位置相鄰的數(shù))并在

* 每次發(fā)現(xiàn)前面的那個(gè)數(shù)比緊接它后的數(shù)大時(shí)交換位置;進(jìn)行足夠多趟直到某一趟跑完后發(fā)現(xiàn)這一趟沒有進(jìn)行任何交換操作(最壞情況下要跑n-1趟,

* 這種情況在最小的數(shù)位于給定數(shù)列的最后面時(shí)發(fā)生)。事實(shí)上,在第一趟冒泡結(jié)束后,最后面那個(gè)數(shù)肯定是最大的了,于是第二次只需要對(duì)前面n-1

* 個(gè)數(shù)排序,這又將把這n-1個(gè)數(shù)中最小的數(shù)放到整個(gè)數(shù)列的倒數(shù)第二個(gè)位置。這樣下去,冒泡排序第i趟結(jié)束后后面i個(gè)數(shù)都已經(jīng)到位了,第i+1趟實(shí)

* 際上只考慮前n-i個(gè)數(shù)(需要的比較次數(shù)比前面所說的n-1要?。?。這相當(dāng)于用數(shù)學(xué)歸納法證明了冒泡排序的正確性

java遞歸算法

1.漢諾塔問題

import javax.swing.JOptionPane;

public class Hanoi {

private static final String DISK_B = "diskB";

private static final String DISK_C = "diskC";

private static final String DISK_A = "diskA";

static String from=DISK_A;

static String to=DISK_C;

static String mid=DISK_B;

public static void main(String[] args) {

String input=JOptionPane.showInputDialog("please input the number of the disks you want me move.");

int num=Integer.parseInt(input);

move(num,from,mid,to);

}

private static void move(int num, String from2, String mid2, String to2) {

if(num==1){

System.out.println("move disk 1 from "+from2+" to "+to2);

}

else {

move(num-1,from2,to2,mid2);

System.out.println("move disk "+num+" from "+from2+" to "+to2);

move(num-1,mid2,from2,to2);

}

}

}

2. 這是一個(gè)排列的例子,它所做的工作是將輸入的一個(gè)字符串中的所有元素進(jìn)行排序并輸出,例如:你給出的參數(shù)是"abc" 則程序會(huì)輸出:

abc

acb

bac

bca

cab

cba

(1)算法的出口在于:low=high也就是現(xiàn)在給出的排列元素只有一個(gè)時(shí)。

(2)算法的逼近過程:先確定排列的第一位元素,也就是循環(huán)中i所代表的元素,

然后low+1開始減少排列元素,如此下去,直到low=high

public static void permute(String str) {

char[] strArray = str.toCharArray();

permute(strArray, 0, strArray.length - 1);

}

public static void permute(char[] list, int low, int high) {

int i;

if (low == high) {

String cout = "";

for (i = 0; i = high; i++)

cout += list[i];

System.out.println(cout);

} else {

for (i = low; i = high; i++) {

char temp = list[low];

list[low] = list[i];

list[i] = temp;

permute(list, low + 1, high);

temp = list[low];

list[low] = list[i];

list[i] = temp;

}

}

}

3。這是一個(gè)組合的例子,與上述的例子相似,只是它所做的工作是,輸出所給字符串中制定數(shù)目的元素的組合種類

(1)程序出口在于n=1,此時(shí)只要輸出目標(biāo)數(shù)組的所有元素即可

(2)逼近過程,當(dāng)n1 的時(shí)候,我們先取第一個(gè)元素放入目標(biāo)數(shù)組中,然后n-1,如此下去,最后出來。

import javax.swing.JOptionPane;

public class Combination {

/**

* @param args

*/

public static void main(String[] args) {

String input = JOptionPane.showInputDialog("please input your String: ");

String numString = JOptionPane.showInputDialog("please input the number of your Combination: ");

int num = Integer.parseInt(numString);

Combine(input, num);

}

private static void Combine(String input, int num) {

char[] a = input.toCharArray();

String b = "";

Combine(a, num, b, 0, a.length);

}

private static void Combine(char[] a, int num, String b, int low, int high) {

if (num == 0) {

System.out.println(b);

} else {

for (int i = low; i a.length; i++) {

b += a[i];

Combine(a, num - 1, b, i+1, a.length);

b=b.substring(0, b.length()-1);

}

}

}

}

java中基數(shù)排序算法代碼

/**??

*?冒泡法排序br/??

*?li比較相鄰的元素。如果第一個(gè)比第二個(gè)大,就交換他們兩個(gè)。/li??

*?li對(duì)每一對(duì)相鄰元素作同樣的工作,從開始第一對(duì)到結(jié)尾的最后一對(duì)。在這一點(diǎn),最后的元素應(yīng)該會(huì)是最大的數(shù)。/li??

*?li針對(duì)所有的元素重復(fù)以上的步驟,除了最后一個(gè)。/li??

*?li持續(xù)每次對(duì)越來越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對(duì)數(shù)字需要比較。/li??

*???

*?@param?numbers??

*????????????需要排序的整型數(shù)組??

*/??

public?static?void?bubbleSort(int[]?numbers)?{???

int?temp;?//?記錄臨時(shí)中間值???

int?size?=?numbers.length;?//?數(shù)組大小???

for?(int?i?=?0;?i??size?-?1;?i++)?{???

for?(int?j?=?i?+?1;?j??size;?j++)?{???

if?(numbers[i]??numbers[j])?{?//?交換兩數(shù)的位置???

temp?=?numbers[i];???

numbers[i]?=?numbers[j];???

numbers[j]?=?temp;???

}???

}???

}???

}

學(xué)習(xí)算法與寫代碼有什么關(guān)系?如何學(xué)習(xí)Java代碼?

1、再好的算法最終的目的都是要實(shí)現(xiàn),所以學(xué)習(xí)算法是最好至少用一種擅長的語言實(shí)現(xiàn)它(即編寫相應(yīng)的代碼),算法只是一種思想,思想要付諸與實(shí)現(xiàn)需要借助代碼。當(dāng)然如果數(shù)學(xué)很好也可以純?cè)诶碚摲矫嫜芯克惴?,也很有前途的,不過要比實(shí)現(xiàn)難得多。

2、學(xué)習(xí)java代碼最好是先選一本很薄的書通讀,了解基本概念。在讀別人的代碼,不會(huì)的地方在回頭看書,只一次找一本詳細(xì)一點(diǎn)的書。之后就是自己寫了,學(xué)一些經(jīng)典的算法或者案例親自寫一個(gè)工程或者項(xiàng)目。


文章標(biāo)題:java算法和代碼,JAVA 算法
分享路徑:http://weahome.cn/article/hooiso.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部