一、排序原理
二、代码实现
package sort;
import java.util.Arrays;
import java.util.Scanner;
/**
* 排序原理:
* 1.把所有的元素分为两组,已经排序的和未排序的;
* 2.找到未排序的组中的第一个元素 ,向已经排序的组中进行插入;
* 3.倒叙遍历已经排序的元素,依次和待插入的元素进行比较,直到找到一个元素小于等于待插入元素,那么就把待插入元素放到这个
* 位置,其他的元素向后移动一位;
*/
public class InsertSort {
/*
对数组a中的元素进行排序
*/
public static void sort(int[] arr){
//未排序元素
for (int i = 1 ;i <=arr.length-1;i++){
//从未排序的第一个元素开始,逆序向前比较
for (int j = i;j>=0;j--){
//比较j和j-1处的值,如果后面值比前面的值小则交换数据,且要保证当j>0,防止j--出现负数
if (j>0 && arr[j]<arr[j-1]){
int temp;
temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}else {
break;
}
}
System.out.println("第"+i+"次排序:"+Arrays.toString(arr));
}
}
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入所要排序的数组长度:");
int n = scanner.nextInt();
//创建长度为n的数组
int[] arr = new int[n];
获取待排序的数组
System.out.println("请输入冒泡排序前的数组(enter键结束):");
//将每次键入的值,依次存入arr数组
for (int i = 0 ;i<arr.length;i++){
arr[i] = scanner.nextInt();
}
System.out.println("原始数据:"+Arrays.toString(arr));
System.out.println("开始排序...");
//开始排序
sort(arr);
//打印排序后的数组a
System.out.println("排序成功!!!");
System.out.println("选择排序后的数据:"+Arrays.toString(arr));
}
}
截图