C#之冒泡排序

以前在学校的时候看过冒泡排序,看的时候挺明白的,但是自己写的时候就写不出来

冒泡排序从字面意思理解:应该是这样的,按照顺序从最下面一个(数组索引最大)上升到第一个:

所以代码是这样的:

  //冒泡排序
        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; //然后把临时位置的那个大数赋给后一个
          }
        }
      }
    }
原文地址:https://www.cnblogs.com/lfxiao/p/6742477.html