大神 我冒泡排序 还有 选择排序 看不懂啊 怎么才能看懂

冒泡
#include "stdafx.h"
#include "conio.h"
int main(int argc, char* argv[])
{
int avg[10]={10,5,8,4,3,9,-2,3,6,7};
int i,j,temp;
for(i=0;i for(j=9;j>i;j--)
{
if(avg[j]<avg[j-1])
{
temp=avg[j-1];
avg[j-1]=avg[j];
avg[j]=temp;
}
}
printf("从小到大排序后为:\n");
for(i=0;i<10;i++)
printf("%d",avg[i]);
printf("\n");
getch();
return 0;
}


```其中这里要怎么理解
for(i=0;i<9;i++)
    for(j=9;j>i;j--)
    {
       if(avg[j]<avg[j-1])
       {
         temp=avg[j-1];
         avg[j-1]=avg[j];
         avg[j]=temp;
       }

冒泡排序,每次找出一个最大的,放在后面,并且一路上颠倒所有顺序不同的。
选择排序,遍历序列,找一个最小的,排在有序序列的最后一个。
无论什么排序,都有如下代码
temp=avg[j-1];
avg[j-1]=avg[j];
avg[j]=temp;
这个是交换。

http://baike.baidu.com/link?url=nIYsAmJM-nj7rndEBqaFToQ6qsgjOtxYWUCzfjyxUcNalliB8aAHXX4etDmMZR49GwgmPeYn75ORQqArLxr0Pa
http://baike.baidu.com/link?url=3du4t-LtCHFIbxRkaQuNBglgpBWVQnmADyTtN6rsVH1ZsbKthqoGCAuluXJx906hT3iGlHe82QP28ZgicL-IGq

冒泡排序的特点就是,依次对比相邻的两个数,若左边的数比右边的数小就接着往后比较;若右边的数比左边的数小则交换两个数的位置。总而言之,就是把大的数放在右边,如此一来,第一次排序完后最右边的数是最大的。这就和现实生活中冒泡的时候大的泡泡上升的比较快一个原理。
经过第一次排序后最后一个数是最大了,然后再像刚刚一样再来排一边,但只排到n-1个数,这样就把第二大的数字给排出来。
依次类推,最后就能把所有的数字按照从小到大排序出来了。

这属于最基本的算法,如果这些学不透彻的话,后面很难继续学习下去,建议你买一本《数据结构》严蔚敏版的系统的学习一下!

http://visualgo.net
这个网站 上边有图形化的冒泡和选择排序

有那种数据结构的算法视频讲解,你去搜一下,视频会带着你去看懂这个算法,以后你遇见就会了~~熟能生巧