算法原理:
遍历整个数组,对原数组中的每个元素插入到新的数组中,首先找到合适的位置,其次将后面的元素都向后移动一位,最后将元素插入到数组中。直到原数组中的所有元素都插入完成。
算法实现:
package com.example;
/**
*
* @Description : 用插入排序算法进行排列一个数组
* @ClassName : InsertionSort
* @author : RelaxOne
* @date : 2018年8月18日 下午4:06:53
*/
public class InsertionSort {
/**
*
* @Description: 将一个数组用插入排序算法进行升序排列
* @author : RelaxOne
* @date : 2018年8月18日
* @param arr
* @return arr
*/
public static Double[] sort_up(Double[] arr){
for(int i=1;i<arr.length;i++) {
for(int j=0;j<i;j++) {
double temp = arr[i];
if( arr[j] >= arr[i]) {
for(int k=i;k>j;k--) {
arr[k] = arr[k-1];
}
arr[j] = temp;
}
}
}
return arr;
}
/**
*
* @Description: 将一个数组用插入排序算法进行降序排列
* @author : RelaxOne
* @date : 2018年8月18日
* @param arr
* @return arr
*/
public static Double[] sort_down(Double[] arr){
for(int i=1;i<arr.length;i++) {
for(int j=0;j<i;j++) {
double temp = arr[i];
if( arr[j] <= arr[i]) {
for(int k=i;k>j;k--) {
arr[k] = arr[k-1];
}
arr[j] = temp;
}
}
}
return arr;
}
}
测试代码:
package com.example;
public class Test {
public static void main(String[] args) {
Double[] arr = new Double[] {1.2,-4.2,2.5,3.8,1.9};
arr = InsertionSort.sort_up(arr);
printArray(arr);
}
public static void printArray(Double[] arr) {
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i] + " ");
}
}
}
运行结果: