[アルゴリズム]5.クイックソート:クイックソート(Java)クイックソートJava
12033 ワード
クイックソートは、基点としての基点を決定し、基点を基準にして大きな値を右に、小さな値を左側に位置合わせする方法です.
思考のロジックの一番前をピボットに設定します. 左メモリ pivot未満の数 右メモリ pivotより大きい 2,3再帰 を実行する.の配列を統合します. 実現は思ったより簡単です.
集計ソートと似ているからかも?
コード実装(Java) subList()を書くかどうか考え始めましたが、右から左へ簡単に実現しました.
思考のロジック
集計ソートと似ているからかも?
コード実装(Java)
package algorithms.advancedsort;
import java.util.ArrayList;
import java.util.List;
public class QuickSort {
public ArrayList<Integer> sort(ArrayList<Integer> dataList) {
if (dataList.size() <= 0) {
return dataList;
}
Integer pivot = dataList.get(0);
ArrayList<Integer> leftArr = new ArrayList<>();
ArrayList<Integer> rightArr = new ArrayList<>();
for (int index = 1; index < dataList.size(); index++) {
if (pivot < dataList.get(index)) rightArr.add(dataList.get(index));
else leftArr.add(dataList.get(index));
}
ArrayList<Integer> mergedArr = new ArrayList<>();
mergedArr.addAll(this.sort(leftArr));
mergedArr.addAll(List.of(pivot));
mergedArr.addAll(this.sort(rightArr));
return mergedArr;
}
public static void main(String[] args) {
ArrayList<Integer> testData = new ArrayList<>();
for (int index = 0; index < 100; index++) {
testData.add((int) (Math.random() * 100));
}
System.out.println("TestData");
System.out.println(testData);
QuickSort quickSort = new QuickSort();
System.out.println("sortedData");
System.out.println(quickSort.sort(testData));
}
}
悩みの部分Reference
この問題について([アルゴリズム]5.クイックソート:クイックソート(Java)クイックソートJava), 我々は、より多くの情報をここで見つけました https://velog.io/@ksg0605/알고리즘-5.-Quick-Sort-퀵-정렬-Javaテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol