java中是否有更复杂的气泡排序算法版本?
我创建了一些代码,使用冒泡排序对数组进行排序,但有人告诉我,冒泡排序有一种变体性能更好,所以我想知道是否有更好的冒泡排序版本。例如,我使用的是常规版本,如果它如下所示:java中是否有更复杂的气泡排序算法版本?,java,sorting,Java,Sorting,我创建了一些代码,使用冒泡排序对数组进行排序,但有人告诉我,冒泡排序有一种变体性能更好,所以我想知道是否有更好的冒泡排序版本。例如,我使用的是常规版本,如果它如下所示: package termproject3; import java.util.Random; import java.util.Scanner; import java.util.concurrent.TimeUnit; public class TermProject3 { /** * @param args the
package termproject3;
import java.util.Random;
import java.util.Scanner;
import java.util.concurrent.TimeUnit;
public class TermProject3 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Scanner sc = new Scanner(System.in);
System.out.println("please enter the size of the array:");
int n = sc.nextInt();
System.out.println("Enter the number of iterations: ");
int num_i = sc.nextInt();
int swap;
int array[] = new int[n];
Random r = new Random();
long startTime = System.nanoTime();
for (int t = 0; t < num_i; t++){
System.out.println();
System.out.println( t+1 + ".- Array to be sorted: ");
for (int i = 0; i < n; i++) {
array[i] = r.nextInt(array.length);
System.out.print(array[i] + ", ");
}
System.out.println();
for (int i = 0; i < (n - 1); i++) {
for (int d = 0; d < n - i - 1; d++) {
if (array[d] > array[d + 1]) {
swap = array[d];
array[d] = array[d + 1];
array[d + 1] = swap;
}
}
}
System.out.println("Sorted list using bubble sort :");
for (int i = 0; i < n; i++) {
System.out.print(array[i] + ", ");
}
System.out.println();
}
long running_time = System.nanoTime() - startTime;
System.out.println("elapsed time: " +running_time+ " nano seconds");
System.out.println("which is " + running_time/1E9 + " seconds");
}
}
package-term项目3;
导入java.util.Random;
导入java.util.Scanner;
导入java.util.concurrent.TimeUnit;
公共类项目3{
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args){
//此处的TODO代码应用程序逻辑
扫描仪sc=新的扫描仪(System.in);
System.out.println(“请输入数组的大小:”);
int n=sc.nextInt();
System.out.println(“输入迭代次数:”);
int num_i=sc.nextInt();
国际互换;
int数组[]=新的int[n];
随机r=新随机();
long startTime=System.nanoTime();
for(int t=0;t数组[d+1]){
交换=数组[d];
数组[d]=数组[d+1];
数组[d+1]=交换;
}
}
}
System.out.println(“使用冒泡排序的排序列表:”);
对于(int i=0;i
我不知道为什么要使用冒泡排序,但是集合。排序(列表)
和集合。排序(列表,比较器)
实现您可以使用的快速排序 我不知道为什么要使用冒泡排序,但是Collections.sort(List)
和Collections.sort(List,Comparator)
实现您可以使用的快速排序 这个答案可能会对您有所帮助:
值得一提的是,优化冒泡排序是一项愚蠢的工作,因为存在更快、更优雅的方法:
Collections.sort(List)
此答案可能对您有所帮助: 值得一提的是,优化冒泡排序是一项愚蠢的工作,因为存在更快、更优雅的方法:
Collections.sort(List)
除非这是一个学校作业,否则我可能只会使用内置的排序。它确实是一个学校作业,我被告知有一个优化版本@xdhmoorew你说的优化是什么意思?如果它比O(n ^ 2)性能好,它不再是冒泡排序。冒泡排序和变体:通过优化,我的意思是有一个冒泡排序变量,检查数组是否已经排序,如果它是下一个数字,而不是遍历整个数组,除非这是一个学校作业,我可能只会使用内置排序。它确实是一个学校作业,我被告知有一个优化版本@xdhmoorew你说的优化是什么意思?如果它的性能优于O(n ^ 2),它不再是冒泡排序。冒泡排序和变体:通过优化,我的意思是有一个冒泡排序变量,它检查数组是否已经排序,如果已经排序,它将转到下一个数字,而不是遍历整个数组。这一点是使用优化版本的冒泡排序优化当前冒泡排序。这一点是使用优化版本优化当前冒泡排序像泡沫一样。