Cで基数ソートプログラムを最適に実装する方法は?



この記事では、C言語の基数ソートプログラムを紹介し、理解を深めるためにプログラムによるデモンストレーションを行います。

この記事では、基数ソートを紹介し、基数ソートを実装する方法を説明します この記事では、次のポインタについて説明します。

それでは始めましょう、





簡単に言うと、並べ替えとは、指定された要素を体系的な順序で配置することを意味します。ソートはほとんどのアルゴリズムで実行されます。これは、検索が容易になり、最終的にアルゴリズムが効率的になるためです。このブログでは、一般的に使用される痛みのアルゴリズムの1つ、つまり基数ソートについて理解します。

基数ソートは、非比較の整数ソートアルゴリズムです。最下位桁(つまり、右側に存在する桁)から最上位桁(つまり、左側に存在する桁)まで、桁ごとにソートします。基数ソートは、ソートのサブルーチンとしてカウントソートを使用します。
比較ベースの並べ替えアルゴリズム(ヒープ並べ替え、クイック並べ替え、マージ並べ替えなど)の下限は&Omega(nLogn)であり、nLognを超えて改善することはできません。カウントソートについて言えば、それはO(n + k)時間計算量の線形時間ソートアルゴリズムであり、範囲は1〜kです。ここで、ソートのカウントに関する問題は、要素の範囲が1からn2の場合にO(n2)が必要になることです。



したがって、線形時間で1からn2の範囲の要素を持つ配列をソートするには、基数ソートが必要です。基数ソートは、配列の桁を最下位桁から最上位桁の順にソートします。基数ソートは、ソートのサブルーチンとしてカウントソートを使用します。

Cでの基数ソートプログラムに関するこの記事に進むと、

基数ソートアルゴリズム

右にある最下位桁から始まり、左にある最上位桁に向かって、すべての桁に対して次の手順を実行します。



現在の桁に従ってカウントソートを使用して要素をソートします。
例:

tostringはJavaでどのように機能しますか

元の配列:
140、65、85、110、612、54、12、86

最下位桁を並べ替えると、つまり1つの場所で、次のようになります。

140、110、612、12、54、65、85、86

注:612は12の前に表示され、並べ替えは1桁に対してのみ行われるため、この反復の後、612は12の前に表示されます。

次の桁、つまり10の位で並べ替えると、次のようになります。

110、612、12、140、54、65、85、86

最上位桁で並べ替えると、つまり100の位に表示され、次のようになります。

012、054、065、085、086、110、140、612

cでリンクリストを作成する方法

Cでの基数ソートプログラムに関するこの記事に進むと、

Cの基数ソートプログラム

基数ソート関数を最初に見てください

基数ソート機能:

void radixsort(int array []、int n){//最大桁数を取得して最大桁数を知るint m = getMax(array、n)int dig //カウントソートは(dig = 1 m / dig> 0 dig * = 10)countSort(array、n、dig)}

Cでの基数ソートプログラムに関するこの記事に進むと、

カウントソート機能:

void countSort(int array []、int n、int dig){int output [n] int i、count [10] = {0} //発生数をcount []に格納しますfor(i = 0 i= 0 i-){output [count [(array [i] / dig)%10] -1] = array [i] count [(array [i] / dig)%10]-} //コピー配列をarr []に出力し、arr []が//(i = 0iの現在の桁に従ってソートされた数値を含むようになります。

先に進んで、基数ソートを実装するCプログラムを書いてみましょう。

例:

#include //最大数を見つける関数intgetMax(int array []、int n){int max = array [0] int i for(i = 1 i max)max = array [i] return max} // Countの関数sortvoid countSort(int array []、int n、int dig){int output [n] int i、count [10] = {0} //発生数をcount []に格納するfor(i = 0私= 0 i-){output [count [(array [i] / dig)%10] -1] = array [i] count [(array [i] / dig)%10]-} //コピー配列をarr []に出力し、arr []に//(i = 0 i 0 dig * = 10)の現在の桁に従ってソートされた数値が含まれるようにしますcountSort(array、n、dig)} //配列を出力する関数void print(int arr []、int n){int i for(i = 0 i

出力

Javaの力に

C-Edurekaの出力基数ソートプログラム

上記のプログラムを実行すると、C言語の基数ソートプログラムを理解できたはずです。これで、「Javaでのクイックソート」に関するこの記事は終わりです。詳細を知りたい場合は、 、信頼できるオンライン学習会社。 EdurekaのJavaJ2EEおよびSOAトレーニングおよび認定コースは、Hibernate&SpringなどのさまざまなJavaフレームワークに加えて、コアJavaコンセプトと高度なJavaコンセプトの両方についてトレーニングするように設計されています。

質問がありますか?このブログのコメントセクションでそれについて言及してください。できるだけ早くご連絡いたします。