冒泡排序

#include<stdio.h>
/*
	冒泡排序好理解,稳定,空间复杂度低,不需要额外开辟数组元素的临时保存控件,编写容易。 
其算法很简单,就是比较数组相邻的两个值,把大的像泡泡一样“冒”到数组后面去,一
共要执行N的平方除以2这么多次的比较和交换的操作(N为数组元素),其复杂度为Ο(n2)
*/
void print(int *a){
	int i;
	for(i = 0; i < 7;i++){
		printf("%d ",a[i]);
	}
	printf("%d\n",a[i]);
} 

int main(){///bubble 
	int i,j,temp;
	int a[8] = {95, 45, 15, 78, 84, 51, 24, 12};
	printf("原序列:");
	print(a);
	for(i = 0; i < 7;i++){//可以少循环一次 最后一次剩下最后一个元素 肯定是最大的元素 排序7趟 
		//temp = a[i];
		for(j = 0;j < 7-i;j++){//比较数组相邻的两个值  每次把大的 冒泡到后面去 
			if(a[j] > a[j+1]){
				temp = a[j];
				a[j] = a[j+1];
				a[j+1] = temp;
			//	index = j;
			}
		} 
		printf("第 %d 趟排序:",i+1);
		print(a);
	}
	printf("排序后元素如下:");
	print(a);
	return 0;
}
/*
	鸡尾酒排序 双向冒泡
	void CocktailSort(int *a,int nsize)  
{  
    int tail=nsize-1;  
    for (int i=0;i<tail;)  
    {  
        for (int j=tail;j>i;--j) //第一轮,先将最小的数据排到前面  
        {  
            if (a[j]<a[j-1])  
            {  
                int temp=a[j];  
                a[j]=a[j-1];  
                a[j-1]=temp;  
            }  
        }  
        ++i;                    //原来i处数据已排好序,加1  
        for (j=i;j<tail;++j)    //第二轮,将最大的数据排到后面  
        {  
            if (a[j]>a[j+1])  
            {  
                int temp=a[j];  
                a[j]=a[j+1];  
                a[j+1]=temp;  
            }      
        }  
        tail--;                 //原tail处数据也已排好序,将其减1  
    }  
}   
*/ 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值