数据结构复习之–“插入排序”-JAVA实现
菜鸟中的菜鸟一枚,面临找工作,复习下数据结构,写的插入排序算法记录一下,每天写一点,不断积累吧!
import java.util.Scanner;
/**
*
* @author DL
* 数据结构复习之插入排序练习程序
*
*/
public class SortTest {
public static void main(String [] args){
Scanner sc = new Scanner(System.in);
int totalNums = sc.nextInt();//读入待排序的数据个数
//为读入的数据分配空间,多分配一个,其中第一个位置inputData[0]作为哨兵
int [] inputData = new int[totalNums+1];
for(int i=1;i<=totalNums;i++){
inputData[i]=sc.nextInt();
}
show(inputData);
insertSort(inputData);
show(inputData);
}
/**
* 插入排序程序
* @param array 待排序数组
*/
static void insertSort(int [] array){
for (int i = 2; i < array.length; i++) {
array[0]=array[i];//将待比较的元素拷贝到array[0]位置,作为哨兵
int j;
for(j=i-1;j>0;j--){
//从选中元素开始左边第一个进行比较,直到找到一个比它大的元素,跳出循环
if(array[0]<array[j]){
array[j+1]=array[j];//比哨兵小的元素位置向后移动
}else{
break;
}
}
//代码精简版
/*for(j=i-1;array[0]<array[j];j--){
array[j+1]=array[j];
}*/
array[j+1]=array[0];//将当前待比较元素插入到找到的位置
}
}
/**
* 输出数组元素
* @param array 待显示数组
*/
static void show(int [] array){
for (int i = 1; i <array.length; i++) {
System.out.print(array[i]+" ");
}
System.out.println("\n");
}
}