欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

2020-12-09

程序员文章站 2022-03-21 08:34:10
排序个人对于几个排序的认识:插入排序:将要排序的数组分成两个部分,有序部分,待插入部分。把无序的部分插入到有序的当中,遇到第一个比插入元素要大的元素,该插入元素插入到这个元素的位置。例子如下:一个无序数组int a[]={50,10,30,5,77}。第一轮:我们先假设50是有序的部分,10是待插入的。10和50比较,50>10------一次本轮排序后的顺序:10,50。第二轮:10,50有序部分,我们再插入30,拿30和10,50,依次比较,10,30,50------一次(和...

排序

个人对于几个排序的认识:

  1. 插入排序:将要排序的数组分成两个部分,有序部分,待插入部分。把无序的部分插入到有序的当中,遇到第一个比插入元素要大的元素,该插入元素插入到这个元素的位置。例子如下:
    一个无序数组int a[]={50,10,30,5,77}。
    第一轮:我们先假设50是有序的部分,10是待插入的。
    10和50比较,
    50>10------一次
    本轮排序后的顺序:10,50。
    第二轮:10,50有序部分,我们再插入30,拿30和10,50,依次比较,
    10,30,50------一次(和50比较)
    10,30,50-----二次(和10比较)这里因为30比10大,所以不用调换位置。
    本轮排序后的顺序:10,30,50。
    第三轮:10,30,50有序的,5待插入的。拿5依次和它们比较,
    10,30,5,50------一次
    10,5,30,50------二次
    5,10,30,50-----三次
    本轮排序后的顺序:5,10,30,50
    第四轮:5,10,30,50是有序的,77是待插入的。拿77依次和它们比较,
    5,10,30,50,77------一次
    5,10,30,50,77------二次
    5,10,30,50,77------三次
    5,10,30,50,77------四次
    本轮排序后的顺序:5,10,30,50,77
    这里77虽然都比它们大,但是依然要和它们依次比较,(不要认为不用比较,这次是是因为77比它们大,下次如果是45,或者比5还小的数呢?如:4,3。。。所以一定要比较)
    总结一下:插入排序,可以理解成,先固定第一个数,再选后一个数作为待插入的,比较大小,然后交换位置,小的排前面,大的排后面。随着有序部分的数增多,后面待插入的数要逐个依次和有序部分的数比较大小
public static void main(String[] args){
	int a[]={50,10,30,5,77};//定义一个数组
	System.out.println("原数组:\n"+Arrays.toString(a));
	for(int i=1;i<a.length;i++){//外层循环,控制轮数,轮数=数组长度-1,这里i从1开始是考虑到下面j的取值,假设i=0,j=i-1就没有意义了,所以i=1开始
		for(int j=i;j>0;j--){//内层循环,控制比较次数
			if(a[i]<a[j-1]){
				int temp=a[j-1];
				a[j-1]=a[i];
				a[i]=temp;
			}
		}
	}
	System.out.println("插入排序: \n"+Arrays.toString(a));
}

2020-12-09

本文地址:https://blog.csdn.net/yangkaihui55/article/details/110929304

相关标签: java