冒泡法排序

写的可能比较多,也可能不是很好,但是很好理解,是个刚入门java的程序菜鸟,谢谢浏览!

1.冒泡上浮法排序

package 我的java;
import java.util.Scanner;
public class 冒泡上浮法排序 {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		//定义一个数m,做数组长度
		System.out.println("请输入数组长度:");
		int m=scanner.nextInt();
		if(m<=0) {
			System.out.println("输入错误!!!");
		}
		else {
			//定义数组
			int ar[]=new int[m];
			System.out.println("请依次输入数组元素:");
			for(int i=0;i<m;i++) {
				ar[i]=scanner.nextInt();
			}
			if(m==1) {
				System.out.println(ar[0]);
			}
			else {
				//上浮法轮数,将最小的数依次放在数组最上边
				for(int k=0;k<m;k++) {
					int changer,l=m-2;
					for(int p=m-1;p>=0;p--) {
						//如果数组后一个元素小于前一个元素,则交换
						if(ar[p]<ar[l]) {
							changer=ar[p];
						    ar[p]=ar[l];
						    ar[l]=changer;
						}
						l--;
						if(l<0)
							break;
					}
				}
				//将排序后的数组元素依次输出
				System.out.print("上浮法排序后为:");
			    for(int k=0;k<m;k++) {
				    System.out.printf("%d ",ar[k]);
			}
		}
	}
	}
}

2.冒泡下沉法排序

package 我的java;
import java.util.Scanner;
public class 冒泡下沉法排序 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		//输入一个数n,代表数组容量
		System.out.println("请输入数组长度:");
		int n=scanner.nextInt();
		if(n<=0) {
			System.out.println("输入错误!!!");
		}
		else {
		//创建一个数组
		int arr[]=new int[n];
		//循环输入
		System.out.println("请依次输入数组元素:");
		for(int i=0;i<n;i++) {
			arr[i]=scanner.nextInt();
		}
		if(n==1) {
			System.out.println(arr[0]);
		}
		else {
		    //冒泡下沉法轮数
		    for(int k=0;k<n;k++) {
			    int l=1,changer;
			    //每轮比较出一个最大的依次放在数组下面
			    for(int p=0;p<n;p++) {
			    	//如果数组前一个元素大于后一个元素,则交换
				    if(arr[p]>arr[l]) {
					    changer=arr[p];
					    arr[p]=arr[l];
					    arr[l]=changer;
				    }
				    l++;
				    if(l>n-1)
					    break;
			    }
		    }
		    //将排序后的数组元素依次输出
		    System.out.print("下沉法排序后为:");
		    for(int k=0;k<n;k++) {
			    System.out.printf("%d ",arr[k]);
		    }
	    }
	}
	}
}


版权声明:本文为weixin_51647957原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。