Java排序程序混乱
我正在为我的java课程做一个作业。我们必须创建一个程序,要求用户输入几个整数,然后他们选择使用哪种类型的排序方法(即选择、冒泡和插入) 方向说明我们应该有一个driver类和一个名为Sorter的类。类分拣机将具有不同分拣选项的方法 我的问题是,我从插入排序开始,开始做这一切,并认为最简单的部分是将它分为不同的类,但我很难做到这一点。我想我应该使用一个“菜单”开关,在下面的方法中为不同的排序算法添加不同的方法。但我不知道如何让它正常工作。任何帮助都将不胜感激 另外,我的插入排序看起来正常吗?我认为使用数组列表比使用固定数组更好,事实证明这比我想象的更难 这是我的密码 驾驶员等级Java排序程序混乱,java,class,sorting,methods,Java,Class,Sorting,Methods,我正在为我的java课程做一个作业。我们必须创建一个程序,要求用户输入几个整数,然后他们选择使用哪种类型的排序方法(即选择、冒泡和插入) 方向说明我们应该有一个driver类和一个名为Sorter的类。类分拣机将具有不同分拣选项的方法 我的问题是,我从插入排序开始,开始做这一切,并认为最简单的部分是将它分为不同的类,但我很难做到这一点。我想我应该使用一个“菜单”开关,在下面的方法中为不同的排序算法添加不同的方法。但我不知道如何让它正常工作。任何帮助都将不胜感激 另外,我的插入排序看起来正常吗?我
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Iterator;
public class DriverSort {
public static void main(String[] args) {
Scanner scan =new Scanner(System.in);
/* System.out.println("1-Insertion sort\n"
+"2-Selection sort\n"
+ "3-Bubble sort\n"
+ "0-quit\n"
+ "Please enter the number for a sorting method or enter 0 to quit: ");
option = scan.nextInt(); */
//Instantiate and call Insertion sort.
String list="";
ArrayList<Integer> arrlist=new ArrayList<Integer>();
System.out.println(" ");
System.out.println(" ");
System.out.println("Welcome to the sorting application menu, the following sorting"
+ "methods are available: ");
System.out.println("Please enter the list of elements: ");
System.out.println(" write 'STOP' when list is completed ");
while(!(list=scan.nextLine()).equalsIgnoreCase("stop")){
int intelement = Integer.parseInt(list);
arrlist.add(intelement);
}
int elementlist[] = new int[arrlist.size()];
Iterator<Integer> iter = arrlist.iterator();
for (int j=0;iter.hasNext();j++) {
elementlist[j] = iter.next();
}
elementlist = Sorter.insertionSort(elementlist);
System.out.println(" ");
System.out.println(" ");
System.out.println(" ");
System.out.println("Values after Insertion Sort : ");
for (int j=0;j<elementlist.length;j++) {
System.out.print(elementlist[j]+" ");
}
}
}
import java.util.Scanner;
导入java.util.ArrayList;
导入java.util.Iterator;
公共类DriverSort{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
/*System.out.println(“1-插入排序\n”
+“2-选择排序\n”
+“3气泡排序\n”
+“0-退出\n”
+请输入排序方法的编号,或输入0退出:);
option=scan.nextInt()*/
//实例化并调用插入排序。
字符串列表=”;
ArrayList arrlist=新的ArrayList();
System.out.println(“”);
System.out.println(“”);
System.out.println(“欢迎使用排序应用程序菜单,下面的排序”
+“方法可用:”;
System.out.println(“请输入元素列表:”);
System.out.println(“完成列表时写入“停止”);
而(!(list=scan.nextLine()).equalsIgnoreCase(“停止”)){
int intelement=Integer.parseInt(列表);
arrlist.add(intelement);
}
int elementlist[]=新的int[arrlist.size()];
迭代器iter=arrlist.Iterator();
对于(int j=0;iter.hasNext();j++){
elementlist[j]=iter.next();
}
elementlist=分拣机。插入分拣(elementlist);
System.out.println(“”);
System.out.println(“”);
System.out.println(“”);
System.out.println(“插入排序后的值:”);
对于(int j=0;j 0&&list[j-1]>next){
列表[j]=列表[j-1];
j--;
}//结束时
//插入元素
列表[j]=下一个;
}//循环结束
退货清单;
}//末端插入端口
}//终端开关
}
}
描述不太清楚,但这是一种方法:
应该编写的是一个抽象类(或接口)排序器,它带有一个抽象方法“void sort(int[]list)`。然后编写三个扩展(或实现)Sorter的类,其中一个用于排序方法;这里方法sort实际上实现了算法
“驱动程序”执行对话,创建一个Sorter子类实例并调用sort
public abstract class Sorter {
public abstract void sort( int[] list );
}
public class InsertionSorter extends Sorter {
public void sort( int[] list ){
// implement insertion sort
}
}
public class Driver {
public void sortUsing(){
int iSort = ...;
int[] list = ...;
Sorter sorter = null;
switch( iSort ){
case 1:
sorter = new InsertionSorter();
break;
// cases 2, 3,...
default:
throw ...;
}
sorter.sort( list );
}
}
描述不太清楚,但这是一种方法: 应该编写的是一个抽象类(或接口)排序器,它带有一个抽象方法“void sort(int[]list)`。然后编写三个扩展(或实现)Sorter的类,其中一个用于排序方法;这里方法sort实际上实现了算法 “驱动程序”执行对话,创建一个Sorter子类实例并调用sort
public abstract class Sorter {
public abstract void sort( int[] list );
}
public class InsertionSorter extends Sorter {
public void sort( int[] list ){
// implement insertion sort
}
}
public class Driver {
public void sortUsing(){
int iSort = ...;
int[] list = ...;
Sorter sorter = null;
switch( iSort ){
case 1:
sorter = new InsertionSorter();
break;
// cases 2, 3,...
default:
throw ...;
}
sorter.sort( list );
}
}
描述不太清楚,但这是一种方法: 应该编写的是一个抽象类(或接口)排序器,它带有一个抽象方法“void sort(int[]list)`。然后编写三个扩展(或实现)Sorter的类,其中一个用于排序方法;这里方法sort实际上实现了算法 “驱动程序”执行对话,创建一个Sorter子类实例并调用sort
public abstract class Sorter {
public abstract void sort( int[] list );
}
public class InsertionSorter extends Sorter {
public void sort( int[] list ){
// implement insertion sort
}
}
public class Driver {
public void sortUsing(){
int iSort = ...;
int[] list = ...;
Sorter sorter = null;
switch( iSort ){
case 1:
sorter = new InsertionSorter();
break;
// cases 2, 3,...
default:
throw ...;
}
sorter.sort( list );
}
}
描述不太清楚,但这是一种方法: 应该编写的是一个抽象类(或接口)排序器,它带有一个抽象方法“void sort(int[]list)`。然后编写三个扩展(或实现)Sorter的类,其中一个用于排序方法;这里方法sort实际上实现了算法 “驱动程序”执行对话,创建一个Sorter子类实例并调用sort
public abstract class Sorter {
public abstract void sort( int[] list );
}
public class InsertionSorter extends Sorter {
public void sort( int[] list ){
// implement insertion sort
}
}
public class Driver {
public void sortUsing(){
int iSort = ...;
int[] list = ...;
Sorter sorter = null;
switch( iSort ){
case 1:
sorter = new InsertionSorter();
break;
// cases 2, 3,...
default:
throw ...;
}
sorter.sort( list );
}
}
嗯,我认为你对设计比对代码更困惑。无论如何,你可以很容易地找到答案,所以我会尽力帮你设计
public class DriverSort {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
private static Sorter sorter = new Sorter();
// blah blah blah
// take the input in an array or alist
int choice; // variable which says which sorting algorithm to use
int[] arr; // list of inputs to be sorted
switch (choice)
{
case 0: sorter.InsertionSort(are);
sorter.print(arr);
break;
case 1: sorter.QuickSort(arr);
sorter.print(arr);
break;
// and so on…
default:
break;
}
}
}
}
使驱动程序
类独立于任何排序和打印逻辑。在分拣机
类中处理该段代码
public class Sorter {
public int[] InsertionSort(int[] arr)
{
// implement specific sorting logic
return arr;
}
public int[] SelectionSort(int[] arr)
{
// implement specific sorting logic
return arr;
}
public int[] QuickSort(int[] arr)
{
// implement specific sorting logic
return arr;
}
public int[] ShellSort(int[] arr)
{
// implement specific sorting logic
return arr;
}
public void print(int[] arr)
{
}
}
嗯,我认为你对设计比对代码更困惑。无论如何,你可以很容易地找到答案,所以我会尽力帮你设计
public class DriverSort {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
private static Sorter sorter = new Sorter();
// blah blah blah
// take the input in an array or alist
int choice; // variable which says which sorting algorithm to use
int[] arr; // list of inputs to be sorted
switch (choice)
{
case 0: sorter.InsertionSort(are);
sorter.print(arr);
break;
case 1: sorter.QuickSort(arr);
sorter.print(arr);
break;
// and so on…
default:
break;
}
}
}
}
使驱动程序
类独立于任何排序和打印逻辑。在分拣机
类中处理该段代码
public class Sorter {
public int[] InsertionSort(int[] arr)
{
// implement specific sorting logic
return arr;
}
public int[] SelectionSort(int[] arr)
{
// implement specific sorting logic
return arr;
}
public int[] QuickSort(int[] arr)
{
// implement specific sorting logic
return arr;
}
public int[] ShellSort(int[] arr)
{
// implement specific sorting logic
return arr;
}
public void print(int[] arr)
{
}
}
嗯,我认为你对设计比对代码更困惑。无论如何,你可以很容易地找到答案,所以我会尽力帮你设计
public class DriverSort {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
private static Sorter sorter = new Sorter();
// blah blah blah
// take the input in an array or alist
int choice; // variable which says which sorting algorithm to use
int[] arr; // list of inputs to be sorted
switch (choice)
{
case 0: sorter.InsertionSort(are);
sorter.print(arr);
break;
case 1: sorter.QuickSort(arr);
sorter.print(arr);
break;
// and so on…
default:
break;
}
}
}
}
使驱动程序
类独立于任何排序和打印逻辑。在分拣机
类中处理该段代码
public class Sorter {
public int[] InsertionSort(int[] arr)
{
// implement specific sorting logic
return arr;
}
public int[] SelectionSort(int[] arr)
{
// implement specific sorting logic
return arr;
}
public int[] QuickSort(int[] arr)
{
// implement specific sorting logic
return arr;
}
public int[] ShellSort(int[] arr)
{
// implement specific sorting logic
return arr;
}
public void print(int[] arr)
{
}
}
嗯,我认为你对设计比对代码更困惑。无论如何,你可以很容易地找到答案,所以我会尽力帮你设计
public class DriverSort {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
private static Sorter sorter = new Sorter();
// blah blah blah
// take the input in an array or alist
int choice; // variable which says which sorting algorithm to use
int[] arr; // list of inputs to be sorted
switch (choice)
{
case 0: sorter.InsertionSort(are);
sorter.print(arr);
break;
case 1: sorter.QuickSort(arr);
sorter.print(arr);
break;
// and so on…
default:
break;
}
}
}
}
使驱动程序
类独立于任何排序和打印逻辑。在分拣机
类中处理该段代码
public class Sorter {
public int[] InsertionSort(int[] arr)
{
// implement specific sorting logic
return arr;
}
public int[] SelectionSort(int[] arr)
{
// implement specific sorting logic
return arr;
}
public int[] QuickSort(int[] arr)
{
// implement specific sorting logic
return arr;
}
public int[] ShellSort(int[] arr)
{
// implement specific sorting logic
return arr;
}
public void print(int[] arr)
{
}
}
你不能在一个开关中定义一个方法。是的,我应该澄清一下……这是未完成的代码。我不是