c语言实现冒泡排序

冒泡排序的思想是从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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值