以前在學校的時候看過冒泡排序,看的時候挺明白的,但是自己寫的時候就寫不出來
冒泡排序從字面意思理解:應該是這樣的,按照順序從最下面一個(數組索引最大)上升到第一個:
所以代碼是這樣的:
//冒泡排序 public void BubbleSort(double[] data) { for (int i = 0; i < data.Length - 1; i++) { for (int j = data.Length - 1; j >i; j--) { if (data[j] > data[j - 1]) { data[j] = data[j] + data[j - 1]; data[j - 1] = data[j] - data[j - 1]; data[j] = data[j] - data[j - 1]; } } } }
當然如果你喜歡最下底下的元素對應最小索引,那么代碼是這樣的:
//冒泡排序 public void BubbleSort(double[] data) { for (int i = 0; i < data.Length-1; i++) { for (int j = 0; j < data.Length-1-i; j++) { if(data[j]>data[j+1]) { data[j] = data[j] + data[j + 1]; data[j + 1] = data[j] - data[j + 1]; data[j] = data[j] - data[j + 1]; } } } }
這樣也可以實現
public void PopSort(int[] list) { int i, j, temp; //先定義一下要用的變量 for (i = 0; i < list.Length - 1; i++) { for (j = i + 1; j < list.Length; j++) { if (list[i] > list[j]) //如果第二個小於第一個數 { //交換兩個數的位置,在這里你也可以單獨寫一個交換方法,在此調用就行了 temp = list[i]; //把大的數放在一個臨時存儲位置 list[i] = list[j]; //然后把小的數賦給前一個,保證每趟排序前面的最小 list[j] = temp; //然后把臨時位置的那個大數賦給后一個 } } } }