首頁  >  文章  >  Java  >  java中的計數排序

java中的計數排序

WBOY
WBOY原創
2024-08-30 15:58:331120瀏覽

計數排序是一種在任何程式語言中都發揮關鍵作用的演算法,Java 也是如此。計數排序演算法的主要目標是根據以小整數形式出現的鍵對物件集合進行排序,以用於對演算法進行排序。它主要對鍵值對進行操作和計數,根據輸出序列呈現元素的位置。  這種排序的運行時間與項目成線性關係,然後鍵值之間的差異位於最大值和最小值之間。

開始您的免費軟體開發課程

網頁開發、程式語言、軟體測試及其他

文法

Java 中執行計數排序沒有特定的語法,但有一個邏輯流程,以演算法的形式逐步根據輸入執行計數排序,表示如下:

Class name {
Method name following sorting ()
{
# Find the length of array defined;
#the output character array will have sorted array
#Create a count arr to store count of each element, characters and initialize it 0
#Store count of each character element in the array
#Build output character and write the logic to make it operated in reverse order
#that builds output can now be copied from the previous array to the current
#Make use of the driver code to move and proceed.
}

Java 中計數排序如何運作?

  • 如前所述,計數排序演算法在程式設計中起著重要作用;它對以收集格式存在的物件進行排序,並用於計算具有不同鍵和值對的存在元素的數量,並再次與算術計數一起使用,確定每個鍵值對存在的每個元素的位置最小值和最大值之間的差異。
  • 如果檢查的話,運行時間或時間複雜度本質上是線性的,具有數組中的所有元素以及最小和最大鍵值之間的差異,因此這些元素和排序技術適合直接使用鍵變化的情況不顯著大於具有所需鍵的元素。
  • 雖然還有另一種演算法可以支援大部分的key處理,但它的效率不如按要求計數排序和散列,因此可以用基數排序代替,以處理與以前相比大量key的情況.
  • 由於計數排序使用鍵和值對作為數組索引值的一部分,因此它不被視為比較排序。另外,比較排序的下限也是不允許的。
  • 桶排序也只是在相同的任務和類似的時間分析下才低於計數排序,但與當時的計數排序相比,桶排序需要動態數組、鍊錶或大量內存來容納存儲桶中存在的元素,然後計數排序僅儲存每個儲存桶中單獨的單一數字的值。
  • 存在某些輸入和輸出假設序列,因為計數排序的輸入由 n 個項目的集合組成,其中每個項目都有非負整數鍵值,最大值的值為 k。計數排序的一些描述是對整數的線性格式序列進行簡單排序的輸入。
  • 數組的輸出大多不包含具有某種鍵順序的主要項目,但需要根據要求檢查其使用。
  • 計數 Sort 的時間複雜度為 O (n+l),其中 n 是元素數量,l 是考慮輸入的範圍。
  • 此外,輔助空間僅為 O(n+l)。

java 中計數排序的範例

程式透過考慮一些輸入和輸出序列集作為 Java 排序的一部分來示範計數排序。

代碼

public class Counting_Sort_1{
void sort_0(char arr_0[])
{
int n_8 = arr_0.length;
char output_val[] = new char[n_8];
int count_0[] = new int[528];
for (int l_0 = 0; l_0 < 528; ++l_0)
count_0[l_0] = 0;
for (int y_1 = 0; y_1 < n_8; ++y_1)
++count_0[arr_0[y_1]];
for (int l_0 = 1; l_0 <= 526; ++l_0)
count_0[l_0] += count_0[l_0 - 1];
for (int l_0 = n_8 - 1; l_0 >= 0; l_0--) {
output_val[count_0[arr_0[l_0]] - 1] = arr_0[l_0];
--count_0[arr_0[l_0]];
}
for (int l_0 = 0; l_0 < n_8; ++l_0)
arr_0[l_0] = output_val[l_0];
}
public static void main(String []args){
Counting_Sort_1 ob = new Counting_Sort_1();
char arr_0[] = { 's', 'a', 'r', 'c', 's', 'f', 'o',
'i', 'n', 'c', 'a', 'r', 'm' };
ob.sort_0(arr_0);
System.out.print("Sorted_character_array_in_Counting_Sort ");
for (int l = 0; l < arr_0.length; ++l)
System.out.print(arr_0[l]);
}
}

輸出:

java中的計數排序

說明

在上面的範例中,我們在 Java 中實作了計數排序,其中遵循以下步驟才能正確執行:

  • 建立一個具有 Selection_Sort_0 的類,然後遵循該類的輸入集。
  • 建立類別後,就會建立一個方法來儲存將具有排序數組的字元數組。
  • 建立計數數組,其意義是將值作為獨立實體以鍵和值對的形式存儲,進一步以字元形式存儲為計數。
  • 需要更改計數來計算輸出數組中目前字元的實際值和位置。
  • 使用字元集建立輸出數組,使其穩定並可逆序操作。
  • 將排序後的陣列複製到目前數組,以某種方式或另一種方式對數組進行排序。
  • 執行驅動程式程式碼以進一步驅動整個程式碼庫,以從輸入來源取得輸出。

結論

計數排序是一種排序演算法,應用於由一系列元素組成的陣列上進行排序。排序將基於數組中存在的鍵和值對或最小值或最大值的差異。當需要批量使用整數實作時,計數排序給開發者提供了很多幫助。

以上是java中的計數排序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn