插入排序代码实现思路 求插入排序代码实现思路,急急急!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.直接插入排序的基本思想直接插入排序(Straight Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。package test;import java.util.Arrays;public class Test { public static void main(String[] args) { int a[] = {1,5,2,6,8,3,10,20,11,0,-5}; insertSort(a); System.err.println(Arrays.toString(a)); } public static void insertSort(int[] a) { int j, tmp; for (int i=1; i<a.length; i++) { //i表示插入次数,共进行n-1次插入 tmp = a[i]; //把待排序元素赋给tmp j = i - 1; while ((j >= 0) && (tmp < a[j])) { a[j+1] = a[j]; j--; } a[j+1]=tmp; } }} import java.util.Arrays;public class Test { public static void shiftOneElementToRight(int[] array, int start, int last) { for (int i = last; i >= start; --i) { array[i + 1] = array[i]; } } public static void insertSort(int[] array) { // i = 1,表示从第2个数开始进行插入排序,因为第1个元素认为是已经排好序的 for (int i = 1; i < array.length; ++i) { int n = array[i]; for (int j = 0; j < i; ++j) { // array[i]与它前面的所有数比较,如果array[j]比它大, // 则[j, i-1]之间的数都向后移动一个位置,然后array[j]插入原来的array[i] if (n < array[j]) { shiftOneElementToRight(array, j, i - 1); array[j] = n; break; } } } } public static void main(String[] args) { int[] array = { 2, 3, 5, 4, 4, 1 }; insertSort(array); System.out.println(Arrays.toString(array)); }} 大家帮我看看这段代码是怎么回事! JtextField长度大小的控制 scjp的考题 求解释 String取值 java 传参报错 高人来啊 小问题 一个关于Thread的synthronized问题 看看这写的是面向对象的写发吗?感觉是面向过程谁能帮忙改改 问一个有点BT的问题!关于把PDF转换成jpg行不行?? 如何在文本框里实现查找功能,象记事本里的功能一样,一查就使找到的文本反显出来 请java大拿们看看,线程池的一个疑惑问题,关于任务队列的几个为什么.... 请问个比较两个字符串的高效方法
直接插入排序(Straight Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。package test;import java.util.Arrays;public class Test {
public static void main(String[] args) {
int a[] = {1,5,2,6,8,3,10,20,11,0,-5};
insertSort(a);
System.err.println(Arrays.toString(a));
}
public static void insertSort(int[] a) {
int j, tmp;
for (int i=1; i<a.length; i++) { //i表示插入次数,共进行n-1次插入
tmp = a[i]; //把待排序元素赋给tmp
j = i - 1;
while ((j >= 0) && (tmp < a[j]))
{
a[j+1] = a[j];
j--;
}
a[j+1]=tmp;
}
}
}
public static void shiftOneElementToRight(int[] array, int start, int last) {
for (int i = last; i >= start; --i) {
array[i + 1] = array[i];
}
} public static void insertSort(int[] array) {
// i = 1,表示从第2个数开始进行插入排序,因为第1个元素认为是已经排好序的
for (int i = 1; i < array.length; ++i) {
int n = array[i];
for (int j = 0; j < i; ++j) {
// array[i]与它前面的所有数比较,如果array[j]比它大,
// 则[j, i-1]之间的数都向后移动一个位置,然后array[j]插入原来的array[i]
if (n < array[j]) {
shiftOneElementToRight(array, j, i - 1);
array[j] = n;
break;
}
}
}
} public static void main(String[] args) {
int[] array = { 2, 3, 5, 4, 4, 1 };
insertSort(array);
System.out.println(Arrays.toString(array));
}
}