以前在学校的时候看过冒泡排序,看的时候挺明白的,但是自己写的时候就写不出来
冒泡排序从字面意思理解:应该是这样的,按照顺序从最下面一个(数组索引最大)上升到第一个:
所以代码是这样的:
//冒泡排序 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; //然后把临时位置的那个大数赋给后一个 } } } }