java数组:排序算法(冒泡排序,选择排序,插入排序)

1.冒泡排序

每次拿前一个值跟后一个值比较,如果前一个值大就交换;每一轮会把当前最大值交换到后面,直达排序成功

冒泡排序

5个数进行冒泡排序,需要进行4轮比较,每轮比较(个数-轮数)次

n个数进行冒泡排序,需要进行(n-1)次比较,

package cn.xtnotes.u6;

public class T10_MaoPao {
	public static void main(String[] args) {
		int[] a= {51,66,99,21,42};
		for(int i=0;i<a.length-1;i++) {
			System.out.println("第"+(i+1)+"轮比较");
			for(int j=0;j<a.length-i-1;j++) {
				System.out.println("第"+(i+1)+"轮比较,第"+(j+1)+"次比较");
				if(a[j]>=a[j+1]) {
					int h=a[j];
					a[j]=a[j+1];
					a[j+1]=h;
				}
			}
		}
		for (int x:a) {
			System.out.println(x);
		}
	}
}

选择排序

依次在数组中选择一个值,跟后面所有值进行比较,如果有值比这个值小,就交换

选择排序

package cn.xtnotes.u6;

public class T10_MaoPao {
	public static void main(String[] args) {
		int[] a= {51,66,99,21,42};
		//选择排序
		for(int i=0;i<a.length-1;i++) {
			System.out.println("第"+(i+1)+"轮比较");
			for(int j=i+1;j<a.length;j++) {
				if(a[i]>=a[j]) {
					int h=a[1];
					a[i]=a[j];
					a[j]=h;
				}
			}
			System.out.println("-------");
		}
		for (int x:a) {
		System.out.println(x);
          }
}

 插入排序

把数组分成左右两部分,假设左边部分已经完成排序;依次从第二个元素开始,把每个元素插入到左边合适的位置.

插入排序

package cn.xtnotes.u6;
public class T10_MaoPao {
	public static void main(String[] args) {
		int[] a= {51,66,99,21,42};
		//插入排序
		for(int i=0;i<a.length-1;i++) {
			System.out.println("第"+(i+1)+"轮比较");
			for(int j=i+1;j>0;j--) {
				if(a[j]<=a[j-1]) {
					int h=a[j];
					a[j]=a[j-1];
					a[j-1]=h;
				}else {
					break;
				}
			}
		}
		for (int x:a) {
		System.out.println(x);
		}
       }
}

 

阅读剩余
THE END