算法学习之旅,中级篇(3)-–冒泡排序

来源:互联网 发布:东北大学软件工程硕士 编辑:程序博客网 时间:2024/05/17 06:03

介绍
重复遍历数列,一次比较两个数,顺序有误就交换位置。
分析
首先,比较相邻的元素,如果不符合定义的排序规则(比如从小到大,如果后一个数比前一个数小,就是不符合定义的排序规则),就交换两个数的位置。
然后,对每一对相邻的元素做相同的比较操作,从开始第一对到倒数一对。最后的元素会是最小或者最大的数。
最后,对所有的元素都进行相同的比较操作,知道没有任何一个数需要比较后,冒泡排序就完成了。
代码

#include<stdio.h>#include<stdlib.h>#define SIZE 8void Bubble_Sort(int a[],int n){    int i,j,temp;    for(j=0;j<n-1;j++)    {        for(i=0;i<n-1-j;i++)        {            if(a[i]>a[i+1])            {                temp=a[i];                a[i]=a[i+1];                a[i+1]=temp;            }        }    }    return;}int main(){    int number[SIZE]={95,2,4,3,6,43,2,4};    int i;    for(i=0;i<SIZE-1;i++)        printf("%d ",number[i]);    printf("%d\n",number[i]);    Bubble_Sort(number,SIZE);    for(i=0;i<SIZE-1;i++)        printf("%d ",number[i]);    printf("%d\n",number[i]);    system("pause");    return 0;}

遇到的问题
冒泡排序是一种稳定的排序算法,最坏的时间复杂度是逆序重新排序,每个元素都要交换一次,时间复杂度是o(n^2);

原创粉丝点击