Java 氣泡排序

悠悠隱於市發表於2011-03-20

面試時,經常會有一個關於氣泡排序的題目..

冒泡程式:要真正瞭解一個程式演算法..

 

要兩層迴圈控制..

 

比如一個int陣列. 外層迴圈控制.int陣列裡面的個數..  記憶體迴圈取出int陣列中索引為0.1.2.3. 等等. 外層迴圈迴圈一次.記憶體迴圈則 ,則要迴圈..int陣列中資料個數的次數..

 

然後,每次從外層迴圈中拿出一個值, 放在記憶體迴圈裡面比較..如果大於 ,則會把第一個值 與 第二個值進行交換.然後.放在後面..

以此類推.

package pack.java.thread.javabasic;
/**
 * 氣泡排序;
 * @author Administrator
 *
 */
public class MaoPaoSort {
	
	/**
	 * 升序;
	 * @param data
	 */
	private void sortAsc(int[] data){
		if(data.length>0){
			int temp = 0;
			for(int i = 0 ;i<data.length;i++){
				for(int j = i;j<data.length;j++){
					if(data[i]>data[j]){
						temp = data[i];
						data[i] = data[j];
						data[j] = temp;
					}
				}
			}
		}
	}
	
	/**
	 * 降序
	 * @param data
	 */
	private void sortDesc(int[] data){
		if(data.length>0){
			int temp = 0;
			for(int i = 0 ;i <data.length;i++){
				for(int j = i;j<data.length;j++){
					if(data[i] < data[j]){
						temp = data[i];
						data[i] = data[j];
						data[j] = temp;
					}
				}
			}
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int dataArray[] = new int[]{10,2,3,6,1,5,8};
		System.out.println("排序前:");
		for(int d:dataArray){
			System.out.println(d);
		}
		System.out.println("\n");
		
		System.out.println("升序排序後:");
		MaoPaoSort maoPaoSort = new MaoPaoSort();
		maoPaoSort.sortAsc(dataArray);
		
		for(int d:dataArray){
			System.out.println(d);
		}
		
		System.out.println("\n降序排序後:");
		maoPaoSort.sortDesc(dataArray);
		for(int d:dataArray){
			System.out.println(d);
		}
	}
}

 

相關文章