插入排序字符串数组,排序不对
Insertion Sort String Array, not sorting right
你好,这是我的字符串数组插入排序方法。它向控制台返回虚假结果。主要只是一个数组元素一遍又一遍。有什么需要改的大大帮忙appreciated.Thank你们
public static void insertionSort(String[] a, int count) {
int i, j;
String Value;
for (i = 1; i < count; i++) {
Value = a[i];
j = i - 1 ;
while (j >= 0 && a[j].compareTo(Value)> 0) {
a[j+1] = a[j];
j=j-1;
}
a[i+1] = Value;
}
}
检查代码是否正常工作
public static void insertionSort(int array[]) {
int n = array.length;
for (int j = 1; j < n; j++) {
int key = array[j];
int i = j-1;
while ( (i > -1) && ( array [i] > key ) ) {
array [i+1] = array [i];
i--;
}
array[i+1] = key;
printNumbers(array);
}
并打印数字我使用函数 printNumbers(array)
private static void printNumbers(int[] input) {
for (int i = 0; i < input.length; i++) {
System.out.print(input[i] + ", ");
}
System.out.println("\n");
}
问题是a[j+1] = a[j];
你原来的 a[j+1] 会丢失,你只是简单地替换它,没有移动它/存储它,它只是简单地被 a[j] 替换并丢失...
我会像下面这样修改您的代码:
找到要插入的当前值的位置,将其与该位置的元素交换,然后将该元素交换回正确的位置
public static void insertionSort(String[] a, int count) {
int i, j;
String Value;
for (i = 1; i < count; i++) {
Value = a[i];
j = i - 1 ;
int p = i;
while (j >= 0 && a[j].compareTo(Value)> 0) {
p = j--;
}
// p now is correct position to be inserted
swap(a[p], a[i]);
// Now loop the original a[p] back to a[p+1]
for(int z = i; z > p; z--){
swap(a[z], a[z-1]);
}
}
}
下面的代码有效。
public static void insertionSort(String[] a, int count) {
int i, j;
String Value;
for (i = 1; i < count; i++) {
Value = a[i];
j = i;
while (j > 0 && a[j-1].compareTo(Value)> 1) {
a[j] = a[j-1];
j--;
}
a[j] = Value;
你好,这是我的字符串数组插入排序方法。它向控制台返回虚假结果。主要只是一个数组元素一遍又一遍。有什么需要改的大大帮忙appreciated.Thank你们
public static void insertionSort(String[] a, int count) {
int i, j;
String Value;
for (i = 1; i < count; i++) {
Value = a[i];
j = i - 1 ;
while (j >= 0 && a[j].compareTo(Value)> 0) {
a[j+1] = a[j];
j=j-1;
}
a[i+1] = Value;
}
}
检查代码是否正常工作
public static void insertionSort(int array[]) {
int n = array.length;
for (int j = 1; j < n; j++) {
int key = array[j];
int i = j-1;
while ( (i > -1) && ( array [i] > key ) ) {
array [i+1] = array [i];
i--;
}
array[i+1] = key;
printNumbers(array);
}
并打印数字我使用函数 printNumbers(array)
private static void printNumbers(int[] input) {
for (int i = 0; i < input.length; i++) {
System.out.print(input[i] + ", ");
}
System.out.println("\n");
}
问题是a[j+1] = a[j];
你原来的 a[j+1] 会丢失,你只是简单地替换它,没有移动它/存储它,它只是简单地被 a[j] 替换并丢失...
我会像下面这样修改您的代码: 找到要插入的当前值的位置,将其与该位置的元素交换,然后将该元素交换回正确的位置
public static void insertionSort(String[] a, int count) {
int i, j;
String Value;
for (i = 1; i < count; i++) {
Value = a[i];
j = i - 1 ;
int p = i;
while (j >= 0 && a[j].compareTo(Value)> 0) {
p = j--;
}
// p now is correct position to be inserted
swap(a[p], a[i]);
// Now loop the original a[p] back to a[p+1]
for(int z = i; z > p; z--){
swap(a[z], a[z-1]);
}
}
}
下面的代码有效。
public static void insertionSort(String[] a, int count) {
int i, j;
String Value;
for (i = 1; i < count; i++) {
Value = a[i];
j = i;
while (j > 0 && a[j-1].compareTo(Value)> 1) {
a[j] = a[j-1];
j--;
}
a[j] = Value;