日期:2014-05-18  浏览次数:21097 次

谁能给我讲讲冒泡排序的原理
谁能给我讲讲冒泡排序的原理

------解决方案--------------------
http://baike.baidu.com/view/254413.htm
还不如找本书自己看看呢
------解决方案--------------------

先把数据结构 学学
------解决方案--------------------
网上比较多的,搜索一下就有了
------解决方案--------------------
“冒泡”這個詞本身就是很形象的。冒泡排序,就是若干個泡泡在一個水缸裡,然後他們相互比較。

A:“你有我大個嗎?”
B:“沒有。”
A:“那我得浮在你上面。”
C:“A,瞧你小樣,你還沒我大,在我下面待著吧。”
------解决方案--------------------
C# code


int[] array = new int[5] { 1, 4, 2, 5, 3 }; 

for(int i=1;i< arr.Length;i++)
{
   for(int j=(arr.Length-1);j>=i;j--)
   {
       if(arr[j+1]<arr[j])
       {
          int temp= arr[j];
          arr[j+1]=arr[j];
          arr[j] = temp;
       }
    }
}

------解决方案--------------------
C# code

/// <summary>
  /// 基本思路:两两比较
  /// 排序,按升序排列
  /// </summary>
  /// <param name="str"></param>
  public static void GetSort(int[] str)
  {
  int temp = 0;
  Console.Write("原数组是:");
  for (int i = 0; i < str.Length; i++)
  {
  Console.Write(str[i]+"\t");
  }
  Console.WriteLine();
  for (int i = 0; i <str.Length; i++)  
  {
  Console.WriteLine("第{0}轮的排序结果是:",i+1);
  for (int j = 0; j < str.Length-1-i; j++) //两两比较 没一轮比较都会依次递减比表的次数
  {
  if (str[j] > str[j + 1])//比较相邻的两个数
  {
  temp = str[j]; //把较大的值放入到临时变量里
  str[j] = str[j + 1]; //因为是升序 数组第一位放较小值
  str[j + 1] = temp; //因为是升序 数组第二位放较大值(即temp)
  }
  //打印每次比较的结果
  for (int k = 0; k < str.Length; k++)
  {
  Console.Write(str[k] + "\t");
  }
  Console.WriteLine();
    
  }

  Console.WriteLine();
  }
  }
  /// <summary>
  /// 降序,按降序排列
  /// </summary>
  /// <param name="str"></param>
  public static void GetSort1(int[] str)
  {
  int temp = 0;
  for (int i = 0; i < str.Length; i++) //外循环5次
  {
  for (int j = 0; j < str.Length - 1 - i; j++)
  {
  if (str[j] < str[j + 1]) //如果前一个小于后一个
  {
  temp = str[j]; //第一个值和它的下一个值比较 把小的就放入到临时变量里
  str[j] = str[j + 1]; //把大的这个值放入到它后面
  str[j + 1] = temp; //把小的这个值放入到第一位   
  }
  //打印每次比较的结果
  for (int k = 0; k < str.Length; k++)
  {
  Console.Write(str[k] + "\t");
  }
  Console.WriteLine();

  }

  Console.WriteLine();

  }
  }

------解决方案--------------------
http://topic.csdn.net/u/20090113/11/F371C1F2-9330-4B61-B845-00177E6AE953.html
楼主看看这个吧。。。
------解决方案--------------------
C# code

/// <summary>
  /// 基本思路:两两比较
  /// 排序,按升序排列
  /// </summary>
  /// <param name="str"></param>
  public static void GetSort(int[] str)
  {
  int temp = 0;
  Console.Write("原数组是:");
  for (int i = 0; i < str.Length; i++)
  {
  Console.Write(str[i]+"\t");
  }
  Console.WriteLine();
  for (int i = 0; i <str.Length; i++)  
  {
  Console.WriteLine("第{0}轮的排序结果是:",i+1);
  for (int j = 0; j < str.Length-1-i; j++) //两两比较 没一轮比较都会依次递减比表的次数
  {
  if (str[j] > str[j + 1])//比较相邻的两个数
  {
  temp = str[j]; //把较大的值放入到临时变量里
  str[j] = str[j + 1]; //因为是升序 数组第一位放较小值
  str[j + 1] = temp; //因为是升序 数组第二位放较大值(即temp)
  }
  //打印每次比较的结果
  for (int k = 0; k < str.Length; k++)
  {
  Console.Write(str[k] + "\t");
  }
  Console.WriteLine();
    
  }

  Console.WriteLine();
  }
  }
  /// <summary>
  /// 降序,按降序排列
  /// </summary>
  /// <param name="str"></param>
  public static void GetSort1(int[] str)
  {
  int temp = 0;
  for (int i = 0; i < str.Length; i++) //外循环5次
  {
  for (int j = 0; j < str.Length - 1 - i; j++)
  {
  if (str[j] < str[j + 1]) //如果前一个小于后一个
  {
  temp = str[j]; //第一个值和它的下一个值比较 把小的就放入到临时变量里
  str[j] = str[j + 1]; //把大的这个值放入到它后面
  str[j + 1] = t