python,Java实现冒泡排序

python实现

def mppx(lis, pxcs):
    print("冒泡排序:第" + str(pxcs) + "次排序:"+str(lis))
    pxcs += 1
    j = len(lis) - 1
    temp = 0
    for i in range(j, 0, -1):
        if lis[i] < lis[i - 1]:
            temp += 1
            temp_num = lis[i]
            lis[i] = lis[i - 1]
            lis[i - 1] = temp_num
    if temp != 0:
        return mppx(lis, pxcs)
    else:
        return lis
if __name__ == '__main__':
    pxcs = 0
    lis = [123, 34, 5, 5,45, 656, 7, 68]
    print(mppx(lis,0))
def bubble_ sort(lis) :
	n = len(lis)
	#控制比较的轮数
	for j in range(n-1):
		count = 0
		#控制每一 轮的比较次数
		# -1是为了让数组不要越界
		#-j是每一轮结束之后,我们就会少比一个数字
		for	i in range(n-1-j):
			if lis[i] > lis[i + 1] :
				lis[i], lis[i + 1] = lis[i + 1],lis[i]
				count+=1
	#算法优化
	#如果遍历一遍发现没有数字交换, 退出循坏,说明数列是有序的
	if count==0:
		brea k
if __name__ == '__main__':
	lis =[27,3,69,4]
	bubble_ sort(lis)
	print(lis)

java实现

class temp{
    public static void main(String[] args) {
        int[] arr = {3, 5, 2, 1, 4};
        bubbleSort(arr);
    }
    private static void bubbleSort(int[] arr) {
        //外层循环控制的是次数比数组的长度少一次
        for (int i = 0; i < arr.length - 1; i++) {
            //内存循环就是实际循环比较
            //-1 是为了让数组不要越界
            //-1 每轮结束之后,就会少比一个数字
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        printArr(arr);
    }
    private static void printArr(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
 
    }
}
import java.util.Arrays;
import java.util.List;

public class Cs {
    public static void main(String[] args) {
        int[] lis = {123, 34, 5, 5,45, 656, 7, 68};
        System.out.println("冒泡排序最总结果:"+Arrays.toString(mppx(lis, 0)));
    }
    public static int[] mppx(int[] lis, int cs){
        System.out.println("冒泡排序:第"+cs+"次排序:"+ Arrays.toString(lis));
        cs++;
        int tem=0;
        for(int i=lis.length-1;i>0;i--){
            if(lis[i]<lis[i-1]){
                tem++;
                int temp=lis[i];
                lis[i]=lis[i-1];
                lis[i-1]=temp;
            }
        }
        if(tem==0){
            return lis;
        }
        else {
            return mppx(lis,cs);
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值