Java学习——几种排序算法的实现

1、选择排序算法

选择排序算法的思想:如一个数组:a={2,5,0,8,3}

第一次把这个数组中最小的元素和a[0]交换位置,变成 :{0,5,2,8,3}

第二次把a[1]到a[4]这4个元素中最小的和a[1]交换位置,变成:{0,2,5,8,3}

第三次把a[2]到a[4]这3个元素中最小的和a[2]交换位置,变成 :{0,2,3,8,5}

第四次把a[3]到a[4]这2个元素中最小的和a[3]交换位置,变成 :{0,2,3,5,8}

总结一下:

public class Xuanze {

	public static void main(String[] args) {
		int [] a={5,79,2,99,12,65,70,23,10,78};
		int tmp;
		for(int i=0;i<a.length-1;i++) {   //外循环控制交换次数:a[0]到a[8]的位置确定后,a[9]就确定了
			for(int j=i+1;j<a.length;j++) {//内循环控制每次交换前的比较:如果a[i]这个位置本来就是最小的,就不用去交换了,如果不是从i+1这个位置开始找最小的
				if(a[j]<a[i]) {
					tmp=a[j];
					a[j]=a[i];
					a[i]=tmp;    //这三句代码的顺序有讲究
				}
			}
		}
		for(int k=0;k<a.length;k++) {
			System.out.print(a[k]+" ");
		}
	  }
	}

2、冒泡排序:

冒泡排序算法的思想:如一个数组:a={8,5,3,2,0}

第一次把a[0]和a[1],a[1]和a[2],a[2]和a[3],a[3]和a[4]进行比较,把最大的交换到最后面:{5,3,2,0,8}

第二次把a[0]和a[1],a[1]和a[2],a[2]和a[3]进行比较,把第二大的交换到倒数第二:{3,2,0,5,8}

第三次把a[0]和a[1],a[1]和a[2]分别进行比较,把第三大的交换到倒数第三:{2,0,3,5,8}

第四次把a[0]和a[1],把第四大的交换到倒数第四:{0,2,3,5,8}

public class Maopao {

	public static void main(String[] args) {
		int [] a={5,79,2,99,12,65,70,23,10,78};
		int tmp;
		for(int i=0;i<a.length-1;i++) {//外循环控制一共需要多少轮两两比较  (9轮)
			for(int j=0;j<a.length-1-i;j++) {//内循环控制每轮两两比较的次数(9,8,7,6,5,4,3,2,1)
				if(a[j]>a[j+1]) {
					tmp=a[j];
					a[j]=a[j+1];
					a[j+1]=tmp;
				}
			}
		}
		for(int k=0;k<a.length;k++) {
			System.out.print(a[k]+" ");
		}
	  }
	}

3、二分查找:


猜你喜欢

转载自blog.csdn.net/weixin_39430584/article/details/80049379
今日推荐