码迷,mamicode.com
首页 > 编程语言 > 详细

冒泡排序、选择排序、插入排序

时间:2020-05-22 21:31:13      阅读:54      评论:0      收藏:0      [点我收藏+]

标签:comment   sele   对象   else   comm   比较   ram   break   get   

冒泡排序:

  • 核心思想:每一轮找出最大的元素放在数组的最后面。
public  static void BubbleSort(int[] a){
	//外层循环,找每一轮的最大数放在末尾
	for(int i=0;i<a.length;i++){
		//内层循环,遍历数组,比较得出最大值
		for(int j=0;j<a.length-i-1;j++){   
			if(a[j]>a[j+1]){
				int temp=a[j];
				a[j]=a[j+1];
				a[j+1]=temp;
			}
		}
	}
}

插入排序:

  • 核心思想:将数组分为已排序和未排序两部分,未排序的首位m要依次与已排序数组进行比较(从后往前),大的就向后挪一位,直到m比前一位大,m就放在那。
public static void InsertSort(int[] a){
	//外层循环,把每轮未排序的首位进行排序
	for(int i=1;i<a.length;i++){
		int value=a[i];
		int j=i-1;
		for(;j>=0;i--){
			if(value<a[j]){
				a[j+1]=a[j];  //大的就往后挪一位
			}else{
				break;
			}
		}
		a[j+1]=value;
	}
}

选择排序:

  • 核心思想:同样分为已排序和未排序区间,但这次是从未排序区间内进行遍历找出每轮的最小值,然后和已排序区间的末尾进行交换。
public static void SelectSort(int[] a){
	//外层循环以 已排序区间的末尾 作为比较交换对象
	for(int i=0;i<a.length-1;i++){
		int min=i;
		//内层循环在未排序区间中进行遍历,找出最小值的索引,最后再将该值进行交换。
		for(int j=i+1;j<a.length;j++){
			if(a[j]<a[min]){
				min=j;
			}
		}
		int temp=a[min];
		a[i]=a[min];
		a[min]=temp;
	}
}
 
来源:迅闻网

冒泡排序、选择排序、插入排序

标签:comment   sele   对象   else   comm   比较   ram   break   get   

原文地址:https://www.cnblogs.com/1994july/p/12939608.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!