gpt4 book ai didi

java - 插入排序 - 如何接受输入并打印排序后的数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:20:01 24 4
gpt4 key购买 nike

我试图做一个接受任何数据类型(Int、Double、String)然后打印排序数组的插入排序程序。我知道我的代码有效,但我无法找出真正的问题。

import java.util.*;
public class MyInsertionSort

{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.print("Enter anything you want");
String insertionSort = in.nextLine();
int num=Integer.parseInt(insertionSort);
String array[] = new String [num];
for (int i = 0; i < array.length; i++)
{
System.out.print("Input the Number at array index "+i+": ");
array[i] = in.nextLine();
}

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);
}
}
}

最佳答案

泛型插入排序

我快速检查并修复了所有错误。只需在比较工具中比较您的代码和这个代码。这样您就可以了解您错过的内容。截至目前,此代码能够对多种数据类型(如 String、double、int)进行排序。它可以针对任何实现可比较的对象进行更改。

下面是工作代码

import java.util.Scanner;
public class MyInsertionSort
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);

System.out.print("Enter data type to sort : ");
String type = in.nextLine();

System.out.print("Enter number of elements : ");
String insertionSort = in.nextLine();
int num=Integer.parseInt(insertionSort);
String array[] = new String[num];
for (int i = 0; i < array.length; i++)
{
System.out.print("Input the Number at array index "+i+": ");
array[i] = in.nextLine();
}
MyInsertionSort.insertionSortByType(array,type);
in.close();
}


public static void insertionSortByType(String array[], String type)
{
switch (type) {
case "double":
Double[] ConvertedArrayDouble = new Double[array.length];
for (int i = 0; i<array.length; i++) ConvertedArrayDouble[i] = Double.parseDouble(array[i]);
MyInsertionSort.insertionSort(ConvertedArrayDouble);
break;
case "int":
Integer[] ConvertedArrayInt = new Integer[array.length];
for (int i = 0; i<array.length; i++) ConvertedArrayInt[i] = Integer.parseInt(array[i]);
MyInsertionSort.insertionSort(ConvertedArrayInt);
break;
default:
MyInsertionSort.insertionSort(array);
}
}

public static <E extends Comparable<? super E>> void insertionSort(E array[])
{
int n = array.length;
for (int j = 1; j < n; j++)
{
E key = array[j];
int i = j-1;
while ( (i > -1) && ( array[i].compareTo(key) > 0 ) )
{
array [i+1] = array [i]; i--;
}
array[i+1] = key;
}

printNumbers(array);
}

public static <E> void printNumbers(E array[]) {
for (E i : array) {
System.out.println(i);
}
}
}

关于java - 插入排序 - 如何接受输入并打印排序后的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35628712/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com