整數數組按絕對值排序

題目:java

給出一組整數數組,要求按照絕對值從小到大進行排序後輸出。數組

 

能夠用經典的冒泡排序法來計算此問題,計算過程:code

一、比較相鄰兩個元素絕對值,若是第一個比第二個大,則交換他們兩個;排序

二、對每一對相鄰元素作相同工做,直到結尾最後一對完成爲止,這樣在最後的元素會是絕對值最大的;class

三、針對全部元素重複上訴步驟,除了最後一個(已經排好的);test

四、重複步驟1~3,直到排序完成。循環

 

@Test
	public void testSort() {
		int[] arr = {17, -27, 3, 21, -5, 2, 18, -40};
		
		for(int i=0; i<arr.length-1; i++) {
			//外層循環每執行一遍,末尾位置就肯定一個元素。 好比:第一次循環完,肯定 index=arr.length-1的元素;
			//第二次循環,肯定 index=arr.length-2的元素
			for(int j=0; j<arr.length-1-i; j++) {
				if(Math.abs(arr[j]) > Math.abs(arr[j+1])) {
					int tmp = arr[j+1];//交換相鄰兩個元素
					arr[j+1] = arr[j];
					arr[j] = tmp;
				}
			}
		}
		for(int one:arr) {
			System.out.print(one);
			System.out.print(",");
		}
	}
相關文章
相關標籤/搜索