C语言的冒泡排序算法

来源:互联网 发布:淘宝卖家怎么投诉评价 编辑:程序博客网 时间:2024/05/21 06:27

  有的时候C语言程序员入门的人,想用冒泡排序却不知道怎么用。我就是其中之一。 在使用冒泡排序时候中是以为用一个for循环,就可以把一列数排完。在这里我只弄清它的基本逻辑!尽管它确实很简单。



for (i = 0; i < 9; i++) // 10个数,10 - 1轮冒泡,每一轮都将当前最大的数推到最后   
{   
   for (j = 0; j < 9 - i; j++) // 9 - i,意思是每当经过一轮冒泡后,就减少一次比较   
      if (a[j] > a[j+1])   
      {   
         temp = a[j];   
         a[j] = a[j+1];   
         a[j+1] = temp;   
}  

  第一个for循环来使,一列数的个数(如果这里是个数组可能会好叙述一点把!)依次增加。简单一点说,就是使一个·集合里的元素循环一次加一个,来使这个集合变大。然后这个集合没变大一次,第二个for循环就在这个集合里,如果第一个值比它后面的值大,就完成调换。从小到大排一次。而且第一个for循环循环一次,第二个for循环也就重排一次!这就是冒泡排序的基本逻辑。(当然说C++里的sort函数快速排序,就不要在这里说了。这里只说C!)