思路:
用二重循環(huán)實(shí)現(xiàn),外循環(huán)變量設(shè)為i,內(nèi)循環(huán)變量設(shè)為j。假如有n個(gè)數(shù)需要進(jìn)行排序,則外循環(huán)重復(fù)n-1次,內(nèi)循環(huán)依次重復(fù)n-1,n-2,…,1次。每次進(jìn)行比較的兩個(gè)元素都是與內(nèi)循環(huán)j有關(guān)的,它們可以分別用a[j]和a[j+1]標(biāo)識(shí),i的值依次為1,2,…,n-1,對(duì)于每一個(gè)i,j的值依次為0,1,2,…n-i 。
設(shè)數(shù)組長(zhǎng)度為N:
1.比較相鄰的前后二個(gè)數(shù)據(jù),如果前面數(shù)據(jù)大于后面的數(shù)據(jù),就將二個(gè)數(shù)據(jù)交換。
2.這樣對(duì)數(shù)組的第0個(gè)數(shù)據(jù)到N-1個(gè)數(shù)據(jù)進(jìn)行一次遍歷后,最大的一個(gè)數(shù)據(jù)就“沉”到數(shù)組第N-1個(gè)位置。
3.N=N-1,如果N不為0就重復(fù)前面二步,否則排序完成。
自定義排序數(shù)據(jù)類型:
1.Int類型:冒泡排序(降序)(一維單數(shù)組);
2.Int類型:冒泡排序(升序)(一維單數(shù)組);
3.Double類型:冒泡排序(降序)(一維單數(shù)組);
4.Double類型:冒泡排序(升序)(一維單數(shù)組);
5.Int類型:冒泡排序(升序):(一維雙數(shù)組);
6.Int類型:冒泡排序(升序):(一維三數(shù)組);
7.Int類型:冒泡排序(降序):(一維雙數(shù)組);
8.Doble類型:冒泡排序(降序):(一維雙數(shù)組);
9.String類型:冒泡排序(降序):(二維雙數(shù)組):(按照二維排序):
自定義:9.String類型:排序舉例如下:
/*
* String類型:冒泡排序(降序):排序雙數(shù)組(自定義二維數(shù)組二維排序):
* 自定義二維數(shù)組排序:
* 輸入:
* arr1:{{“1”,“1”,“3”,“1”,“2”},{“1”,“2”,“1”},{“1”,“2”},{“1”}}
* arr2:{{“延安市”,“咸陽市”,“西安市”,“漢中市”,“寶雞市”},{“廣元市”,“成都市”,“綿陽市”},{“揚(yáng)州市”,“南京市”},{“石家莊市”}}
* 輸出:
* arr1:{{“3”,“2”,“1”,“1”,“1”},{“2”,“1”,“1”},{“1”,“2”},{“1”}}
* arr2:{{“西安市”,“寶雞市”,“延安市”,“咸陽市”,“漢中市”},{“成都市市”,“廣元”,“綿陽市”},{“南京市市”,“揚(yáng)州”},{“石家莊市”}}
*
*/
直接上代碼:文章來源:http://www.zghlxwxcb.cn/news/detail-654590.html
import java.util.Arrays;
import java.util.Iterator;
/*
* 工具類:冒泡排序常用數(shù)據(jù)類型,用法總結(jié)
*
*/
public class BubblSortUtils {
/*
* 1.Int類型:冒泡排序(降序)(一維單數(shù)組);
*
*/
public static void bubbleSortDesc(int[] arr) {
int temp; // 定義一個(gè)臨時(shí)變量
for (int i=0;i<arr.length;i++) {
for (int j = 0; j < arr.length; j++) {
if (arr[i] >= arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
/*
* 2.Int類型:冒泡排序(升序)(一維單數(shù)組);
*
*/
public static void bubbleSortAsc(int[] arr) {
int temp; // 定義一個(gè)臨時(shí)變量
for(int i=0;i<arr.length-1;i++){ // 冒泡趟數(shù)
for(int j=0;j<arr.length-i-1;j++){
if(arr[j+1]<arr[j]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
/*
* 3.Double類型:冒泡排序(降序)(一維單數(shù)組);
*
*/
public static void bubbleSortDescDouble(Double[] arr) {
Double temp; // 定義一個(gè)臨時(shí)變量
for (int i=0;i<arr.length;i++) {
for (int j = 0; j < arr.length; j++) {
if (arr[i] >= arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
/*
* 4.Double類型:冒泡排序(升序)(一維單數(shù)組);
*
*/
public static void bubbleSortAscDouble(Double[] arr) {
Double temp; // 定義一個(gè)臨時(shí)變量
for(int i=0;i<arr.length-1;i++){ // 冒泡趟數(shù)
for(int j=0;j<arr.length-i-1;j++){
if(arr[j+1]<arr[j]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
/*
* 5.Int類型:冒泡排序(升序):(一維雙數(shù)組);
*
*/
public static void bubbleSortAscMultiple(int[] arr,String[] arr2) {
int temp; // 定義一個(gè)臨時(shí)變量
String temp2; // 定義一個(gè)臨時(shí)變量
for(int i=0;i<arr.length-1;i++){ // 冒泡趟數(shù)
for(int j=0;j<arr.length-i-1;j++){
if(arr[j+1]<arr[j]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
temp2 = arr2[j];
arr2[j] = arr2[j+1];
arr2[j+1] = temp2;
}
}
}
}
/*
* 6.Int類型:冒泡排序(升序):(一維三數(shù)組);
*
* 多個(gè)數(shù)組排序,可繼續(xù)優(yōu)化排序代碼
* 提供思路:比如:第一個(gè)入?yún)鱥nt類型數(shù)組進(jìn)行排序,后面多個(gè)數(shù)組按照二維數(shù)組入?yún)ⅲ? *
*/
public static void bubbleSortAscMultiple2(int[] arr,String[] arr2,String[] arr3) {
int temp; // 定義一個(gè)臨時(shí)變量
String temp2; // 定義一個(gè)臨時(shí)變量
String temp3; // 定義一個(gè)臨時(shí)變量
for(int i=0;i<arr.length-1;i++){ // 冒泡趟數(shù)
for(int j=0;j<arr.length-i-1;j++){
if(arr[j+1]<arr[j]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
temp2 = arr2[j];
arr2[j] = arr2[j+1];
arr2[j+1] = temp2;
temp3 = arr3[j];
arr3[j] = arr3[j+1];
arr3[j+1] = temp3;
}
}
}
}
/*
* 7.Int類型:冒泡排序(降序):(一維雙數(shù)組);
*
*/
public static void bubbleSortDescMultiple(int[] arr,String[]arr2) {
int temp;
String temp2;
for (int i=0;i<arr.length;i++) {
for (int j = 0; j < arr.length; j++) {
if (arr[i] >= arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
temp2 = arr2[i];
arr2[i] = arr2[j];
arr2[j] = temp2;
}
}
}
}
/*
* 8.Doble類型:冒泡排序(降序):(一維雙數(shù)組);
*
*/
public static void bubbleSortDescMultipleDouble(Double[] arr,String[]arr2) {
Double temp;
String temp2;
for (int i=0;i<arr.length;i++) {
for (int j = 0; j < arr.length; j++) {
if (arr[i] >= arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
temp2 = arr2[i];
arr2[i] = arr2[j];
arr2[j] = temp2;
}
}
}
}
/*
* 9.String類型:冒泡排序(降序):(二維雙數(shù)組):(按照二維排序):
* 自定義二維數(shù)組排序:
* 輸入:
* arr1:{{"1","1","3","1","2"},{"1","2","1"},{"1","2"},{"1"}}
* arr2:{{"延安市","咸陽市","西安市","漢中市","寶雞市"},{"廣元市","成都市","綿陽市"},{"揚(yáng)州市","南京市"},{"石家莊市"}}
* 輸出:
* arr1:{{"3","2","1","1","1"},{"2","1","1"},{"1","2"},{"1"}}
* arr2:{{"西安市","寶雞市","延安市","咸陽市","漢中市"},{"成都市市","廣元","綿陽市"},{"南京市市","揚(yáng)州"},{"石家莊市"}}
*
*/
public static void bubbleSortDescMultiple2(String[][] arr1,String[][]arr2) {
if(arr1.length == arr2.length) {
for (int a = 0; a < arr1.length; a++) {
String [] s1 = arr1[a];
int[] s2 = Arrays.asList(s1).stream().mapToInt(Integer::parseInt).toArray();
String [] z1 = arr2[a];
int temp;
String temp2;
for (int i=0;i<s2.length;i++) {
for (int j = 0; j < s2.length; j++) {
if (s2[i] >= s2[j]) {
temp = s2[i];
s2[i] = s2[j];
s2[j] = temp;
temp2 = z1[i];
z1[i] = z1[j];
z1[j] = temp2;
}
}
}
// int數(shù)組轉(zhuǎn)String數(shù)組;
String[] s3 = new String[s2.length];
for (int i = 0; i < s2.length; i++) {
s3[i] = String.valueOf(s2[i]);
}
arr1[a] = s3;
arr2[a] = z1;
}
}
}
// 測(cè)試用例:
public static void main(String[] args) {
int arr[] = new int[]{9,3,13,12,12,-2,5,-11,100,423,5622,78900};
bubbleSortDesc(arr);
System.out.println("1.Int類型:冒泡排序(降序):"+Arrays.toString(arr));
System.out.println("----------------------------");
int arr2[] = new int[]{9,3,13,12,12,-2,5,-11,100,423,5622,78900};
bubbleSortAsc(arr2);
System.out.println("2.Int類型:冒泡排序(升序):"+Arrays.toString(arr2));
System.out.println("----------------------------");
Double arr3[] = new Double[]{9.1,3.1,13.1,9.2,9.0,0.0,-0.2,-0.1,-0.35,100.0,423.0,9.0,5622.0,78900.0};
bubbleSortDescDouble(arr3);
System.out.println("3.Double類型:冒泡排序(升序):"+Arrays.toString(arr3));
System.out.println("----------------------------");
Double arr4[] = new Double[]{9.1,3.1,13.1,9.2,9.0,0.0,-0.2,-0.1,-0.35,100.0,423.0,9.0,5622.0,78900.0};
bubbleSortAscDouble(arr4);
System.out.println("4.Double類型:冒泡排序(升序):"+Arrays.toString(arr4));
System.out.println("----------------------------");
int arr5[] = new int[]{9,3,13,12,12,5};
String arrStr5[] = new String[]{"西安","北京","上海","武漢","深圳","成都"};
bubbleSortAscMultiple(arr5,arrStr5);
System.out.println("5.Int類型:冒泡排序(升序):排序雙數(shù)組1:"+Arrays.toString(arr5));
System.out.println("5.Int類型:冒泡排序(升序):排序雙數(shù)組2:"+Arrays.toString(arrStr5));
System.out.println("----------------------------");
int arr6[] = new int[]{9,3,13,12,12,5};
String arrStrArr1[] = new String[]{"西安","北京","上海","武漢","深圳","成都"};
String arrStrArr2[] = new String[]{"西安2","北京2","上海2","武漢2","深圳2","成都2"};
bubbleSortAscMultiple2(arr6,arrStrArr1,arrStrArr2);
System.out.println("6.Int類型:冒泡排序(升序):排序三數(shù)組1:"+Arrays.toString(arr6));
System.out.println("6.Int類型:冒泡排序(升序):排序三數(shù)組2:"+Arrays.toString(arrStrArr1));
System.out.println("6.Int類型:冒泡排序(升序):排序三數(shù)組3:"+Arrays.toString(arrStrArr2));
System.out.println("----------------------------");
int arr7[] = new int[]{9,3,13,12,12,5};
String arrStr7[] = new String[]{"西安","北京","上海","武漢","深圳","成都"};
bubbleSortDescMultiple(arr7,arrStr7);
System.out.println("7.Int類型:冒泡排序(降序):排序雙數(shù)組1:"+Arrays.toString(arr7));
System.out.println("7.Int類型:冒泡排序(降序):排序雙數(shù)組2:"+Arrays.toString(arrStr7));
System.out.println("----------------------------");
Double arr8[] = new Double[]{9.1,3.1,13.1,9.2,9.0,0.0};
String arrStr8[] = new String[]{"西安","北京","上海","武漢","深圳","成都"};
bubbleSortDescMultipleDouble(arr8,arrStr8);
System.out.println("8.Doble類型:冒泡排序(降序):排序雙數(shù)組1:"+Arrays.toString(arr8));
System.out.println("8.Doble類型:冒泡排序(降序):排序雙數(shù)組2:"+Arrays.toString(arrStr8));
System.out.println("----------------------------");
String[][] arr9 = {{"1","1","3","1","2"},{"1","2","1"},{"1","2"},{"1"}};
String[][] arrStr9 = {{"延安市","咸陽市","西安市","漢中市","寶雞市"},{"廣元市","成都市","綿陽市"},{"揚(yáng)州市","南京市"},{"石家莊市"}};
bubbleSortDescMultiple2(arr9,arrStr9);
for (int i = 0; i < arrStr9.length; i++) {
System.out.println("i:"+i);
String[] s = arr9[i];
String[] z = arrStr9[i];
for (int j = 0; j < s.length; j++) {
System.out.println("9.String類型:冒泡排序(降序):排序雙數(shù)組(自定義二維數(shù)組排序)1:"+z[j]+":"+s[j]);
}
}
System.out.println("----------------------------");
}
}
測(cè)試輸出:文章來源地址http://www.zghlxwxcb.cn/news/detail-654590.html
1.Int類型:冒泡排序(降序):[78900, 5622, 423, 100, 13, 12, 12, 9, 5, 3, -2, -11]
----------------------------
2.Int類型:冒泡排序(升序):[-11, -2, 3, 5, 9, 12, 12, 13, 100, 423, 5622, 78900]
----------------------------
3.Double類型:冒泡排序(升序):[78900.0, 5622.0, 423.0, 100.0, 13.1, 9.2, 9.1, 9.0, 9.0, 3.1, 0.0, -0.1, -0.2, -0.35]
----------------------------
4.Double類型:冒泡排序(升序):[-0.35, -0.2, -0.1, 0.0, 3.1, 9.0, 9.0, 9.1, 9.2, 13.1, 100.0, 423.0, 5622.0, 78900.0]
----------------------------
5.Int類型:冒泡排序(升序):排序雙數(shù)組1:[3, 5, 9, 12, 12, 13]
5.Int類型:冒泡排序(升序):排序雙數(shù)組2:[北京, 成都, 西安, 武漢, 深圳, 上海]
----------------------------
6.Int類型:冒泡排序(升序):排序三數(shù)組1:[3, 5, 9, 12, 12, 13]
6.Int類型:冒泡排序(升序):排序三數(shù)組2:[北京, 成都, 西安, 武漢, 深圳, 上海]
6.Int類型:冒泡排序(升序):排序三數(shù)組3:[北京2, 成都2, 西安2, 武漢2, 深圳2, 上海2]
----------------------------
7.Int類型:冒泡排序(降序):排序雙數(shù)組1:[13, 12, 12, 9, 5, 3]
7.Int類型:冒泡排序(降序):排序雙數(shù)組2:[上海, 深圳, 武漢, 西安, 成都, 北京]
----------------------------
8.Doble類型:冒泡排序(降序):排序雙數(shù)組1:[13.1, 9.2, 9.1, 9.0, 3.1, 0.0]
8.Doble類型:冒泡排序(降序):排序雙數(shù)組2:[上海, 武漢, 西安, 深圳, 北京, 成都]
----------------------------
i:0
9.String類型:冒泡排序(降序):排序雙數(shù)組(自定義二維數(shù)組排序)1:西安市:3
9.String類型:冒泡排序(降序):排序雙數(shù)組(自定義二維數(shù)組排序)1:寶雞市:2
9.String類型:冒泡排序(降序):排序雙數(shù)組(自定義二維數(shù)組排序)1:咸陽市:1
9.String類型:冒泡排序(降序):排序雙數(shù)組(自定義二維數(shù)組排序)1:延安市:1
9.String類型:冒泡排序(降序):排序雙數(shù)組(自定義二維數(shù)組排序)1:漢中市:1
i:1
9.String類型:冒泡排序(降序):排序雙數(shù)組(自定義二維數(shù)組排序)1:成都市:2
9.String類型:冒泡排序(降序):排序雙數(shù)組(自定義二維數(shù)組排序)1:綿陽市:1
9.String類型:冒泡排序(降序):排序雙數(shù)組(自定義二維數(shù)組排序)1:廣元市:1
i:2
9.String類型:冒泡排序(降序):排序雙數(shù)組(自定義二維數(shù)組排序)1:南京市:2
9.String類型:冒泡排序(降序):排序雙數(shù)組(自定義二維數(shù)組排序)1:揚(yáng)州市:1
i:3
9.String類型:冒泡排序(降序):排序雙數(shù)組(自定義二維數(shù)組排序)1:石家莊市:1
----------------------------
到了這里,關(guān)于【Java 排序】冒泡排序(升降序,Int類型,Double類型,多數(shù)組排序)(111)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!