gpt4 book ai didi

java - 降序排序算法

转载 作者:行者123 更新时间:2023-12-01 11:00:15 24 4
gpt4 key购买 nike

import javax.swing.*;

import java.lang.reflect.Array;
import java.util.Collections;
import java.util.Random;
import java.util.Scanner;

public class RandExample {

public static void main(String[] args) {

int MethodChoice = Integer.parseInt(JOptionPane.showInputDialog("What method would you like to use to sort the random numbers" + "\n" + "1 - Selection Sort" + "\n" + "2 - Bubble Sort" + "\n" + "3 - Insertion Sort" + "\n" + "4 - Quick Sort"));

if (MethodChoice == 1) {

int iTotalCount = Integer.parseInt(JOptionPane.showInputDialog("What is the total number of integers?"));

int SortOrder = Integer.parseInt(JOptionPane.showInputDialog("1 - Ascending "
+ "2 - Descending"));

if (SortOrder == 2) {
int[] array = new int[iTotalCount];

System.out.println("After sorting using the Selection Sort, " + "Using Descending Order" + "the array is: ");

for(int count = array.length-1; count >= 0; count--)
System.out.print(array[count] + " ");

selectionSortReverse(array);

}

int[] array = new int[iTotalCount];

Random randomGenerator = new Random();

for (int i = 0; i < iTotalCount; i++) {
array[i] = randomGenerator.nextInt(1001);
System.out.print(" " + array[i]);
}

System.out.println("\n---------------------------------");
selectionSort(array);

//print out sorted list
System.out.println("After sorting using the Selection Sort," + " the array is:");
for (int count = 0; count < array.length; count++) {
System.out.print(array[count] + " ");
}
}

我有一个调用selectionSortReverse(array)的子例程;当用户选择 2 使其按降序排序时,但当我点击 2 并继续时,它会按升序发布数字。我把它放在错误的地方了吗?这是我的选择排序反向子例程:

 public static void selectionSortReverse(int data[]) {
int smallest;
for (int i = 0; i < data.length - 1; i++) {
smallest = i;
//see if there is a smaller number further in the array
for (int index = i + 1; index < data.length; index++) {
if (data[index] > data[smallest]) {
swap(data, smallest, index);
}
}
}
}

使用 cricket_007 的建议更新了代码

import javax.swing.*;

import java.lang.reflect.Array;
import java.util.Collections;
import java.util.Random;
public class RandExample {

private static int[] generateRandomArray(int size, int randomMax) {
int[] array = new int[size];
Random randomGenerator = new Random();
for (int i = 0; i < size; i++) {
array[i] = randomGenerator.nextInt(randomMax);
}
return array;
}


public static void main(String[] args) {




int MethodChoice = Integer.parseInt(JOptionPane.showInputDialog("What method would you like to use to sort the random numbers" + "\n" + "1 - Selection Sort" + "\n" + "2 - Bubble Sort" + "\n" + "3 - Insertion Sort" + "\n" + "4 - Quick Sort"));

if (MethodChoice == 1) {

int iTotalCount = Integer.parseInt(JOptionPane.showInputDialog("What is the total number of integers?"));

int SortOrder = Integer.parseInt(JOptionPane.showInputDialog("1 - Ascending "
+ "2 - Descending"));


if (SortOrder == 2) {
int[] array = generateRandomArray(iTotalCount, 1001);
selectionSortReverse(array);

for(int count = array.length-1; count >= 0; count--)
System.out.print(array[count] + " ");
System.out.println("\n---------------------------------");

System.out.println("After sorting using the Selection Sort, " + "Using Descending Order" + " " + "the array is: ");

for(int i : array) {
System.out.print(i + " ");
}
} else if (SortOrder == 1) {
int[] array = generateRandomArray(iTotalCount, 1001);
selectionSort(array);

for(int count = array.length-1; count >= 0; count--)
System.out.print(array[count] + " ");
System.out.println("\n---------------------------------");


System.out.println("After sorting using the Selection Sort," + " the array is:");

for(int i : array) {
System.out.print(i + " ");
}
}

更新3

代码从选择开始工作 ---> 冒泡,插入没那么多。随机整数的打印与排序列表的格式相同。

代码如下:

 } else if (MethodChoice == 3) {
if (SortOrder == 2) {
insertionSortReverse(array);
System.out.println("After sorting using the Insertion Sort, " + "Using Descending Order" + " " + "the array is: ");
} else if (SortOrder == 1) {
insertionSort(array);


System.out.println("After sorting using the Insertion Sort," + " the array is:");

}

for (int i : array) {
System.out.print(i + " ");
}
}

这是我的insertionSort()和insertionSortReverse()子函数:

public static void insertionSort(int data[]) {
int insert;

for (int next = 1; next < data.length; next++) {
insert = data[next];
int moveItem = next;

while (moveItem > 0 && data[moveItem - 1] > insert) {
data[moveItem] = data[moveItem - 1];
moveItem--;
}
data[moveItem] = insert;
}
}

public static void insertionSortReverse(int data[]) {
int insert;

for (int next = 1; next < data.length; next++) {
insert = data[next];
int moveItem = next;

while (moveItem < 0 && data[moveItem - 1] < insert) {
data[moveItem] = data[moveItem - 1];
moveItem--;
}
data[moveItem] = insert;
}
}

最佳答案

您的问题是当您点击 2 并继续时,它会按升序发布数字,这是因为您的升序代码周围没有 else 语句,或者您正在对数组进行反向排序,然后向后打印列表。另外,您发布的降序代码无论如何都对零列表进行排序...

private static int[] generateRandomArray(int size, int randomMax) {
int[] array = new int[size];
Random randomGenerator = new Random();
for (int i = 0; i < size; i++) {
array[i] = randomGenerator.nextInt(randomMax);
}
return array;
}

public static void main(String[] args) {
int MethodChoice = Integer.parseInt(JOptionPane.showInputDialog("What method would you like to use to sort the random numbers" + "\n" + "1 - Selection Sort" + "\n" + "2 - Bubble Sort" + "\n" + "3 - Insertion Sort" + "\n" + "4 - Quick Sort"));
int iTotalCount = Integer.parseInt(JOptionPane.showInputDialog("What is the total number of integers?"));
int SortOrder = Integer.parseInt(JOptionPane.showInputDialog("1 - Ascending, " + "2 - Descending"));

int[] array = generateRandomArray(iTotalCount, 1001);

System.out.println("Randomly Generated number list: ");
for (int i : array) {
System.out.print(i + " ");
}
System.out.println("\n---------------------------------");

if (MethodChoice == 1) {
if (SortOrder == 2) {
selectionSortReverse(array);
System.out.println("After sorting using the Selection Sort, " + "Using Descending Order" + "the array is: ");
} else if (SortOrder == 1) {
selectionSort(array);
System.out.println("After sorting using the Selection Sort," + " the array is:");
}
} else if (MethodChoice == 2) {
// bubble-sort
}

for (int i : array) {
System.out.print(i + " ");
}
}

关于java - 降序排序算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33399569/

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