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

java插入法排序

程序员文章站 2024-01-20 22:27:28
...

java插入法排序

原理:将所排序数组分为两块,一个是有序数组(排序好的数组,通常第一次是数组的第一个元素),另一个是待插入数组(剩余元素),首先将待插入数组的第一个元素赋给一个任意变量,然后使待插入数组的元素依次和有序数组的元素进行比较,若符合条件,则使有序数组的元素向后移动一位,则原来的位置就空了,再把待插入数组的那个元素放到有序数组的位置,重复上述过程,待插入数组元素不断减小,有序数组元素不断增加,直到待插入数组元素为0的时候,排序结束
实例
我想对数组{93,4,2}进行升序排序
首先将数组分为两组,第一组有序数组为元素{9},第二组为待插入数组元素{3,4,2}

第一轮: 现将待插入数组第一个元素3赋给一个任意变量,然后 使9和3进行比较,因为9大于3,所以此时将有序数组元素9向后移动一位,下标为1的元素此时为9,而将值为3的任意变量放到元素9的位置,此时两数进行了交换,,待插入数组少了一个元素,有序数组多了一个元素,数组变为{3,9, 4,2}

第二轮:此时有序数组为{3,9},待插入数组为{4,2},首先任意变量值为元素4,然后让9和待插入数组的第一个元素4进行比较,符合条件,所以9向后移动到元素4的位置,而任意变量移动到元素9的位置,从而进行了交换,接下来元素4和3再进行比较,不符合交换条件所以不交换,同样这次交换待插入数组少了一个元素,有序数组多了一个元素,数组变为{3,4,9 ,2}

第三轮:重复上述过程,可得到最终排序结果{2,3,4,9}

优点:有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,此时就需要用到插入法排序

源代码:

package suanfa;
import java.util.Scanner;
public class charu {
//		插入排序,从小到大
	public static void main(String[] args) {
		int arry[]= {66,     28,11,50,80};
		int i,j,z;
		for(i=1;i<arry.length;i++)
		{
			int min=arry[i];   		  //从待插入组取出第一个元素。  
			z=i-1;						//i-1即为有序组最后一个元素(与待插入元素相邻)的下标 
			while(z>=0&&arry[z]>min)		//注意判断条件为两个,j>=0对其进行边界限制。第二个为插入判断条件 
			{
				arry[z+1]=arry[z]		;//有序数组向后移动一位
				z--;
			}
			arry[z+1]=min;  		  //找到合适位置,插入数据
		}
		System.out.print(" 最终顺序为");
		for(int z1=0;z1<arry.length;z1++)
		{
			System.out.print(" "+arry[z1]);
		}
	}
}
相关标签: java插入法