冒泡排序算法

   冒泡排序:(升序排列)给定一组数据,比较第一个元素和第二个元素的关系,并且把大的放到前面,小的放到后面。然后再依次比较第二个和第三个、第三个和第四个……,直至第n个,这样,第一趟就排序完成了。然后进行第二趟……,第n-1趟,其中n为元素的个数。

来看下面这个例子。

6 3 8 2 9 1

首先是,6和3比较,6>3,交换位置,结果变成了     3 6 8 2 9 1
6和8比较,6<8,不交换。
8和2 比较,8>2,交换位置,结果变成了     3 6 2 8 9 1
8和9 比较,8<9,不交换。
9和1比较,9>1,交换位置,结果变成了     3 6 2 8 1 9
至此,第一趟结束,可以确定的位置是最后一个元素。

第二趟开始:

    3<6,不交换。
    6>2,交换位置,结果变成了 3 2 6 8 1 9
    6<8,不交换。
    8>1,交换,结果变成了 3 2 6 1 8 9

第二趟结束。

第三趟开始:

    3>2,交换位置。结果变成了 2 3 6 1 8 9
    3<6,不交换。
    6>1,交换位置,结果变成了 2 3 1 6 8 9

第三趟结束。

第四趟开始:

    2<3,不交换。
    3>1,交换位置,结果变成了 2 1 3 6 8 9

第四趟结束。

第五趟开始:

    2>1,交换位置。结果变成了 1 2 3 6 8 9

第五趟结束。

code如下:

void bubbleSort(int *arr,int n) //数组,数组中的元素个数 
{
    int i,j,temp;//i为趟数,j为元素下标,temp为中间变量
    for(i=1;i<=n-1;i++){
        for(j=0;j<=n-i-1;j++){//因为j是下标0开始,需要比较元素的个数减趟数次,故需要加 1 
            if(arr[j]>arr[j+1]){
                temp = arr[j+1];
                arr[j+1] = arr[j];
                arr[j] = temp;
            }
        }
    } 
} 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。