您的位置:首页 > 其它

插入排序(Insertion-sort)

2014-10-22 20:46 267 查看
排序问题

输入:n个数(a1,a2,a3...)

输出:输入序列的一个重排列(a1',a2',a3'...),使得a1'>=a2'>=a3'....

插入排序算法:属于对少量元素进行排序的算法,简要过程是两层循环,外层循环是从第二位开始向右移动;内层循环即从外层循环的位置开始不断向左对比,当出现当前元素大于前一个元素时,进行交换并且循环值加一,否则跳出内层循环,直到循环到第一个元素。

import java.util.Scanner;
public class InsertSort {

public static void main(String[] args) {
// TODO Auto-generated method stub
int[] myData;
System.out.println("请依次输入需要排列的数字,并以空格间隔(例如5 8 9。。):");
Scanner input = new Scanner(System.in);
String tempStr=input.nextLine();
input.close();
String [] str = tempStr.split(" ");
myData=new int[str.length];
for(int i=0;i<str.length;i++)
{
int tempEle=Integer.parseInt(str[i]);
myData[i]=tempEle;
}

InsertSort myinsersort = new InsertSort();
myinsersort.SortVec(myData);
}

private void SortVec(int[] tempData)
{
int tempEle;
for(int i=1;i<tempData.length;i++)
{
for(int j=i-1;j>=0;j--)
{
if(tempData[j+1]>tempData[j])
{
tempEle=tempData[j+1];
tempData[j+1]=tempData[j];
tempData[j]=tempEle;
}else
break;
}
}

for(int i=0;i<tempData.length;i++)
System.out.print(tempData[i]+" ");
System.out.println();
System.out.println("排序成功");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: