c语言实现冒泡排序

来源:互联网 发布:淘宝客收入怎么样 编辑:程序博客网 时间:2024/06/04 17:50

冒泡排序的思想是从data[1]到data[n-1],如果data[i]比data[i+1]大,则以data[0]为temp位,将两者进行交换,所以一趟比较下来,最大的将会被不停置换到最后一个位置,因为第一趟已将最大的放到最后,所以第二趟只需要比较到data[n-1]即可,以此类推,即可得到冒泡排序得到的结果,所以说如果整个数组恰好是倒序排列,那么冒泡排序的效率将会是最差的,需要进行n-1次排序,即n(n-1)/2次比较,而效果最好便是整个数组恰巧正序排列,一次排序便可以得到有序序列。总的时间复杂度还是

代码如下
#include <stdio.h>typedef struct{int key;char name[10];}Data;Data ListOld[]={{0,"num0"},{49,"num1"},{38,"num2"},{65,"num3"},{97,"num4"},{76,"num5"},{13,"num6"},{27,"num7"},{49,"num8"}};void BubbleSort(Data *pdata,int n);void PrintData(Data *pdata,int n);int main(int argc, char *argv[]){printf("Hello, world\n");BubbleSort(ListOld,9);return 0;}void PrintData(Data *pdata,int n){int i;for(i=1;i<n;i++){printf("%d,%s ",pdata[i].key,pdata[i].name);}printf("\n");}void BubbleSort(Data *pdata,int n){    int i,j,isExchanged;    for(i=1;i<n-1;i++)    {        for(j=1;j<n-i;j++)        {            if(pdata[j].key>pdata[j+1].key)            {                pdata[0] = pdata[j];                pdata[j] = pdata[j+1];                pdata[j+1] = pdata[0];                isExchanged = 1;            }        }        if(!isExchanged)            break;    }    PrintData(pdata,9);}

0 0
原创粉丝点击