Nano Hash - криптовалюты, майнинг, программирование

есть ли более сложная версия алгоритма пузырьковой сортировки в java?

Я создал некоторый код, который сортирует массив с помощью пузырьковой сортировки, но мне сказали, что существует вариант пузырьковой сортировки, который работает лучше, поэтому мне было интересно, есть ли лучшая версия пузырьковой сортировки. Например, я использую обычную версию, если она ниже:

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

  • Если это не школьное задание, я бы, вероятно, просто использовал встроенную сортировку. 20.02.2014
  • это действительно школьное задание, и мне сказали, что есть его оптимизированная версия. @xdhmoore 20.02.2014
  • Что вы имеете в виду под оптимизацией? учтите, что если он работает лучше, чем O (n ^ 2), это больше не пузырьковая сортировка. 20.02.2014
  • Пузырьковая сортировка и варианты: en.wikipedia.org/wiki/ 20.02.2014
  • под оптимизированным я подразумеваю, что есть переменная пузырьковой сортировки, которая проверяет, отсортирован ли уже массив, и если да, то переходит к следующему числу вместо итерации по всему массиву 20.02.2014
  • Я думаю, ключ в том, где вы каждый раз инициализируете d до 0. 20.02.2014

Ответы:


1

Я не знаю, зачем вам использовать пузырьковую сортировку, но Collections.sort(List) и Collections.sort(List, Comparator) реализуют быструю сортировку, которую вы можете использовать.

20.02.2014
  • смысл в том, чтобы оптимизировать текущую пузырьковую сортировку с помощью оптимизированной версии пузырьковой сортировки. 20.02.2014

  • 2

    Этот ответ может быть вам полезен: Оптимизированная пузырьковая сортировка (Java)

    Следует отметить, что оптимизация пузырьковой сортировки — глупое занятие, поскольку существуют гораздо более быстрые и элегантные методы:

    Collections.sort(List)
    
    20.02.2014
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..