插入排序
插入排序
实现
从第一个元素与第零个元素比较,如果小则交换
第二个元素与第一个比较如果小,交换,在和第0个比较进行交换
依次类推。。。

代码
import java.util.Arrays;
public class InsertSort {
public static void main(String[] args) {
//随机生成数组
int[] array = DataChecker.generaRandomArray(10);
//打印
System.out.println(Arrays.toString(array));
sort(array);
System.out.println(Arrays.toString(array));
}
/**
* 插入排序
* @param array int[]
*/
public static void sort(int[] array){
for (int i = 1; i <array.length ; i++) {
insert(array,i);
}
}
/**
* 将给定的下标元素进行插入排序
* @param arr 数组
* @param index 下标
*/
public static void insert(int[] arr,int index){
for (int i = index; i > 0 ; i--) {
if (arr[i] < arr[i-1]){
swap(arr,i,i-1);
}
}
}
/**
* 交换
* @param arr int[]
* @param i i
* @param j j
*/
public static void swap(int[] arr,int i,int j){
//交换
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
对数器
import java.util.Arrays;
import java.util.Random;
//对数器
public class DataChecker {
/**
* @param size 数组大小
* @return 随机数组
*/
public static int[] generaRandomArray(int size){
return generaRandomArray(size,size);
}
/**
*
* @param size size 数组的大小
* @param randomSize 随机数值的大小
* @return int[]
*/
public static int[] generaRandomArray(int size,int randomSize){
Random random = new Random();
int[] arr = new int[size];
for (int i = 0; i < arr.length; i++) {
arr[i] = random.nextInt(randomSize);
}
return arr;
}
/**
*
* @param arr1 int[]
* @param arr2 int[]
* @return 比较两个数组的值是否相同
*/
public static boolean check(int[] arr1,int[] arr2){
Arrays.sort(arr1);
//选择排序
//SelectedSort.sort(arr2);
//冒泡排序 ,这里可以使用策略模式 就不用每次都该源代码了
//BubbleSort.sort(arr2);
//插入排序
InsertSort.sort(arr2);
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));
for (int i = 0; i < arr1.length; i++) {
if (arr1[i] != arr2[i]){
return false;
}
}
return true;
}
//测试
public static void main(String[] args) {
//存储正确的次数
int right = 0;
for (int i = 0; i < 10000; i++) {
System.out.println("第"+i+"次随机生成进行比较 ");
int[] arr1 = DataChecker.generaRandomArray(100);
int[] arr2 = Arrays.copyOf(arr1,arr1.length);
if (check(arr1,arr2)) right++;
}
System.out.println("right: " + right);
}
}

it's ok

浙公网安备 33010602011771号