冒泡排序是比較經(jīng)典的排序算法。代碼如下:
成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè),成都做網(wǎng)站公司-成都創(chuàng)新互聯(lián)公司已向超過(guò)千家企業(yè)提供了,網(wǎng)站設(shè)計(jì),網(wǎng)站制作,網(wǎng)絡(luò)營(yíng)銷等服務(wù)!設(shè)計(jì)與技術(shù)結(jié)合,多年網(wǎng)站推廣經(jīng)驗(yàn),合理的價(jià)格為您打造企業(yè)品質(zhì)網(wǎng)站。
for(int i=1;iarr.length;i++){
for(int j=1;jarr.length-i;j++){
//交換位置
} ? ?
拓展資料:
原理:比較兩個(gè)相鄰的元素,將值大的元素交換至右端。
思路:依次比較相鄰的兩個(gè)數(shù),將小數(shù)放在前面,大數(shù)放在后面。即在第一趟:首先比較第1個(gè)和第2個(gè)數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個(gè)數(shù)和第3個(gè)數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個(gè)數(shù),將小數(shù)放前,大數(shù)放后。重復(fù)第一趟步驟,直至全部排序完成。
第一趟比較完成后,最后一個(gè)數(shù)一定是數(shù)組中最大的一個(gè)數(shù),所以第二趟比較的時(shí)候最后一個(gè)數(shù)不參與比較;
第二趟比較完成后,倒數(shù)第二個(gè)數(shù)也一定是數(shù)組中第二大的數(shù),所以第三趟比較的時(shí)候最后兩個(gè)數(shù)不參與比較;
依次類推,每一趟比較次數(shù)-1;
??
舉例說(shuō)明:要排序數(shù)組:int[]?arr={6,3,8,2,9,1};?
for(int i=1;iarr.length;i++){
for(int j=1;jarr.length-i;j++){
//交換位置
} ? ?
參考資料:冒泡排序原理
int[] array = {1,2,5,8,12}; //隨便定義一個(gè)數(shù)組,用冒泡排序法
for (int i = 0;i array.length;i++){
for(int j = i;j array.length;j++){
if (array[i] array[j]){
int temp = array[i];
array[i] = array[j];
array[i] = temp;
}
}
}
或者你有一個(gè)數(shù)組
List list = new ArrayList();
list.sort();
public class SortTest {
public void sort(int[] args){
for(int m : args){
System.out.print("排序前 "+args[m]+" ");
}
int time1 = 0,time2 = 0;
for(int i = 0 ; i args.length-1 ; i++){
++time1;
for(int j = i+1 ; j args.length ; j++){
++time2;
int temp ;
if(args[i] args[j]){
temp = args[j];
args[j] = args[i];
args[i] = temp;
}
}
}
System.out.println();
System.out.println("外循環(huán)次數(shù):"+time1+"內(nèi)循環(huán)次數(shù):"+time2);
for(int n : args){
System.out.print("排序后 "+n+" ");
}
}
public static void main(String[] args) {
int[] arg = new int[]{2,1,4,5,8,7,6,3,9,0};
new SortTest().sort(arg);
}
}
降序排列 循環(huán)次數(shù)最少
輸出結(jié)果為:
排序前 4 排序前 1 排序前 8 排序前 7 排序前 9 排序前 3 排序前 6 排序前 5 排序前 0 排序前 2
外循環(huán)次數(shù):9 內(nèi)循環(huán)次數(shù):45
排序后 0 排序后 1 排序后 2 排序后 3 排序后 4 排序后 5 排序后 6 排序后 7 排序后 8 排序后 9
直接調(diào)用jdk里面的方法Arrays.sort(args)方法。而且這個(gè)方法重載實(shí)現(xiàn)了多個(gè)參數(shù),排序下標(biāo)[N~M]位數(shù)字~倒敘,升序等等~
for (int i = 0; i list.size(); i++) {
for (int j = i + 1; j list.size(); j++) {
if (list.get(i) list.get(j)) {
int temp = list.get(i);
list.set(i, list.get(j));
list.set(j, temp);
}
}
}
System.out.println("升序:" + list);
for (int i = 0; i list.size(); i++) {
for (int j = i + 1; j list.size(); j++) {
if (list.get(i) list.get(j)) {
int temp = list.get(i);
list.set(i, list.get(j));
list.set(j, temp);
}
}
}
System.out.println("降序:" + list);
/**
*?2015年5月28日下午9:52:57
*?
*?@author?season?TODO?測(cè)試已通過(guò),獲取財(cái)富值
*
*/
public?class?ArrayOperation?{
/**
*?對(duì)數(shù)組?arr?進(jìn)行冒泡排序升序排序
*?
*?@param?arr
*????????????目標(biāo)數(shù)組
*/
public?static?void?bubbleToUp(int[]?arr)?{
if?(null?==?arr)//?數(shù)組為空時(shí),退出該方法
return;
for?(int?i?=?0;?i??arr.length?-?1;?i++)?{
for?(int?j?=?0;?j??arr.length?-?i?-?1;?j++)?{
if?(arr[j]??arr[j?+?1])?{
int?temp?=?arr[j];
arr[j]?=?arr[j?+?1];
arr[j?+?1]?=?temp;
}
}
}
}
/**
*?使用選擇排序法對(duì)目標(biāo)數(shù)組進(jìn)行降序排序
*?
*?@param?arr
*????????????目標(biāo)數(shù)組
*/
public?static?void?selectToDown(int[]?arr)?{
for?(int?i?=?0;?arr?!=?null??i??arr.length;?i++)?{
int?flag?=?i;
for?(int?j?=?i?+?1;?j??arr.length;?j++)?{
if?(arr[j]??arr[flag])
flag?=?j;
}
if?(flag?!=?i)?{
int?temp?=?arr[i];
arr[i]?=?arr[flag];
arr[flag]?=?temp;
}
}
}
/**
*?遍歷數(shù)組所有元素
*?
*?@param?arr
*????????????目標(biāo)數(shù)組
*/
public?static?void?displayArray(int[]?arr)?{
System.out.println();
for?(int?num?:?arr)
System.out.print("??"?+?num);
}
public?static?void?main(String[]?args)?{
//?初始化數(shù)組
int[]?arr?=?{?20,?-878,?90,?78,?89,?-908?};
//?首先進(jìn)行冒泡排序(升序)
bubbleToUp(arr);
displayArray(arr);
//?然后進(jìn)行選擇排序(降序)
selectToDown(arr);
displayArray(arr);
}
}