以前在學校的時候看過冒泡排序,看的時候挺明白的,但是自己寫的時候就寫不出來
冒泡排序從字面意思了解:應該是這樣的,按照順序從最下面一個(數組索引最大)上升到第一個:
是以代碼是這樣的:
//冒泡排序
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; //然後把臨時位置的那個大數賦給後一個
}
}
}
}