冒泡排序

冒泡排序思想就是相邻两个数比较大小,将最大或最小的数放在最后,最后那个数确定并不在比较,再从第一个数进行冒泡比较。

冒泡排序的时间复杂度是O(n^2),稳定性:因为冒泡排序中,要求A[i-1]是严格大于A[i]的,在交换的过程中。重复元素虽然有所聚集,但不会相互跨越。因此冒泡排序是稳定的。

A[5]={4,6,3,7,2}

两个for循环进行排序

        for (int i = 0; i < A.length - 1; i++) {
            for (int j = 0; j < A.length -1 - i; j++) {
                if (A[j] > A[j+1]) {
                    temp = A[j];
                    A[j] = A[j+1];
                    A[j+1] = temp;
                }
            }
        }

一个for循环和while(flag)会好点

/*C++*/
void bubbleSort1(int A[],int n)
{
	bool sorted=false; //排序状态为无序
	while(!sorted)/*逐趟扫描交换,直到sorted=true,即为有序状态*/
	{
		sorted=true; //如果接下来if判断一次也不执行,则序列整体有序
		for(int i=1;i<n;i++)//A[0,n)
		{
			if(A[i-1]>A[i]) //逆序
			{
				swap(A[i-1],A[i]);//交换
				sorted=false; //序列状态未定
			}	
		}
		--n; //进行下一趟比较,序列向前缩进
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值