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

Posted 1994july

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序选择排序插入排序相关的知识,希望对你有一定的参考价值。

冒泡排序:

  • 核心思想:每一轮找出最大的元素放在数组的最后面。
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;
	}
}
 
来源:迅闻网

以上是关于冒泡排序选择排序插入排序的主要内容,如果未能解决你的问题,请参考以下文章

三大基础排序算法(冒泡排序,选择排序,插入排序)

排序算法学习(直接插入排序,希尔排序,选择排序,堆排序,冒泡排序)

[leetcode]排序算法(冒泡排序,选择排序,插入排序,快速排序,计数排序)

总结:大厂面试常考手撕代码 —— JavaScript排序算法(冒泡排序选择排序插入排序快速排序)

JavaScript算法(冒泡排序选择排序与插入排序)

直接插入排序 ,折半插入排序 ,简单选择排序, 希尔排序 ,冒泡排序 ,快速排序 ,堆排序 ,归并排序的图示以及代码,十分清楚