問題の説明:
数字 N を入力した後、N 個の数字を入力し、出力された N 個の数字を並べ替えます。 。
入力:
出力:
アルゴリズム設計:
#クイック ソートの基本的な考え方は、分割統治戦略に基づいており、アルゴリズムの考え方は次のとおりです: (1) 分解: まず、シーケンスから要素を参照要素として取得し、ベンチマーク要素を標準として、問題を 2 つのサブシーケンスに分解し、ベンチマーク要素以下のサブシーケンスを左側に、ベンチマークより大きいサブシーケンスを配置します。要素は右側にあります。(2) ガバナンス: 2 つのサブシーケンスをすばやく並べ替えます。(3) マージ: 並べ替えられた 2 つのサブシーケンスをマージして、元の問題の解決策を取得します。無料のビデオ チュートリアルの推奨事項:ソート対象の現在のシーケンスが R[low:high] (low≤high) であると仮定します。シーケンスのサイズが十分に小さい場合は、直接ソートします。そうでない場合は、3 つのステップで処理します。 処理:
(1) 分解: R[low:high] 内の要素 R[pivot] を選択し、これを使用します。ソート対象の配列を R[low:pivot-1] と R[pivot 1:high] の 2 つの配列に分割し、配列 R[low:pivot] 内のすべての要素の値が以下になるようにするためのマークとしてR[pivot] または R[pivot] に等しく、シーケンス R[pivot 1:high] 内のすべての要素が R[pivot] より大きい場合、この時点でベンチマーク要素はすでに正しい位置にあり、ベンチマーク要素はベンチマーク要素に参加する必要はありません。 (2) ガバナンス: 2 つのサブシーケンス R[low:pivot-1] および R[pivot 1:high ] について、ソートはクイック ソート アルゴリズムを再帰的に呼び出すことによって実行されます。(3) マージ: R[low:pivot-1] と R[pivot:high] のソートはその場で実行されるため、R[low:pivot-1] と R[pivot 1:high] の後ソートされているため、マージ ステップでは何もする必要はなく、シーケンス R[low:high] がソートされています。
サンプル コード: //程序目的:用分治法中的快速排序解决排序问题
import java.util.Scanner;
public class text2 {
public static void swap(int array[],int a,int b){//交换函数
int temp;
temp=array[a];
array[a]=array[b];
array[b]=temp;
}
public static int Partition(int r[],int low,int high){
int i=low ;
int j=high;
int pivot=r[low];//基准元素
while(i<j) {
while (i < j && r[j] > pivot) //向左扫描
j--;
if (i < j) {
swap(r, i++, j);
}
while (i < j && r[i] <= pivot) {//向右扫描
i++;
}
if (i < j) {
swap(r, i, j--);
}
}
return i;
}
public static void QuickSort(int R[],int low,int high){//快速排序递归算法
int mid;
if(low<high){
mid=Partition(R,low,high);//基准位置
QuickSort(R,low,mid-1);//左区间递归快速排序
QuickSort(R,mid+1,high);//右区间递归快速排序
}
}
public static void main(String args[]){
Scanner sc=new Scanner (System.in);
int i;
int n;//数据的个数
System.out.println("请先输入要排序元素的个数");
n=sc.nextInt();
System.out.println("请输入要排序的数据");
int []a=new int[n];
for (i=0;i<n;i++){
a[i]=sc.nextInt();
}
QuickSort(a,0,n-1);
System.out.println("排序后的数据");
for (i=0;i<n;i++){
System.out.print(a[i]+" ");
}
System.out.println();
}
}
実行結果:
## 推奨される関連学習チュートリアル: java Getting Started Tutorial
以上がJavaの分割統治法でクイックソートを使用してソート問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、さまざまなJava Garbage Collectionアルゴリズム(シリアル、パラレル、CMS、G1、ZGC)、そのパフォーマンスへの影響、および大きなヒープを持つアプリケーションの適合性について説明します。

この記事では、Java Virtual Machine(JVM)について説明し、さまざまなプラットフォームでJavaプログラムを実行する際の役割について詳しく説明しています。 JVMの内部プロセス、主要コンポーネント、メモリ管理、ガベージコレクション、およびパフォーマンスの最適化について説明します

Javaのナショーンエンジンは、Javaアプリ内でJavaScriptスクリプトを可能にします。重要な手順には、ナショーンのセットアップ、スクリプトの管理、パフォーマンスの最適化が含まれます。主な問題には、ナショーンのdeprecによるセキュリティ、記憶管理、将来の互換性が含まれます

Javaのリソースでの試行は、ファイルストリームやデータベース接続などのリソースを自動的に閉じることでリソース管理を簡素化し、コードの読みやすさと保守性を向上させます。

Java Enumsは、固定された値のセットを表し、カスタムメソッドとコンストラクターを介してタイプの安全性、読みやすさ、および追加の機能を提供します。それらはコード組織を強化し、効率的なバリューハンドリングのためにスイッチステートメントで使用できます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

WebStorm Mac版
便利なJavaScript開発ツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター
