2012-02-10 16 views
2

あなたのためだけにソートし、ソートを完了した後に変更があるかどうかを確認するコードがありますか?あなたは、だから私は正しい軌道上のイムと思うが、私はそこにすべての右にあるかどうかを確認するためにint型を比較す​​る方法を知らない整数の配列がソートされているかどうかをチェックする方法は?

int[] arr = {4,1,3,8,9,2,7,0,5,6}; 
System.out.println(Arrays.toString(arr)); 
selectionSort(arr); 

public static void selectionSort (int []arr) { 
    for(int i = 0; i < arr.length; i ++) { 
     //find the ith element 
     int smallest = i; 
     for (int j = i + 1; j <arr.length; j++) { 
      //find the smallest unsorted element 
      if(arr[j] < arr[smallest]) { 
       smallest = j; 

これらの線に沿って挿入ソート、選択または何かのようにソートの特定のタイプを使用します注文。

何を追加する必要がありますか?

+0

ソートされているかどうかをソートする理由は何ですか?各要素を調べて、それが以前のものであることを確認してください。 –

+0

ソートされているかどうかだけを知りたいのであれば、始めから始めて見て回ってみてください。それらをソートしたいと思ったら...ソートしてください。物事の上にO(n)を追加する理由はありません。 –

+0

私はループし、i + 1がiよりも大きいことを確認します。それが必要以上に困難になる理由はありません。あなたと私たちに語っていない限り。 – Justin

答えて

8

これはずっと簡単です。配列全体を繰り返し、各要素が次の要素よりも小さいかどうかを確認するだけです。

int[] checkarray = ....; 

boolean sorted = true; 
for(int i = 1; i < checkarray.length; i++) { 
    if(checkarray[i-1] > checkarray[i]){ 
      sorted = false; 
      break; 
    } 
} 

System.out.println("Sorted: " + sorted); 
1

あなたはあなたのためだけに、そのあなたが入力として使用する配列を取る方法である場合は変更

がありますかどうかを確認ソート をした後、それをソートするコードを持っているでしょうソートされると予想されますが、そうであるかどうかわからない場合は、このソートソートを適用することができます。

@Petarの答えは、最もシンプルで簡単なので、行く方法です。

あなたがプログラム内の特定の時刻にソートされているかどうかわからない場合、何かをソートするのは不合理ではないので、この回答も完全に言及します。

最後に、完全にソートされていない場合は、O(N)スキャンを実行していないため、最上部に並べ替えが複雑になりますO(NlogN)

これは、ソートアルゴリズムに関するアルゴリズム分析のほとんどが、ソートされた入力に対するパフォーマンスを言及している理由です。
あなたの場合は例です。

-1

選択ソートは線形検索を使用してリストまたは配列をスキャンする最も簡単なソート手法ですが、並べ替えの方法としては優れています。クイックソートはDivide and Conquerの理論に基づいています。ここでは、リストをさまざまな小さなサブリストに分割し、順番に並べ替えます。 WikipediaのQuick sortについて読んでください。また、知っておくべき重要なことは、All Identicalデータなどの典型的なデータの出現に基づいて、さまざまなソート手法がどのように実行されるかです。

+2

これはどのように質問に答えますか? –

1
//def ArrayList listOfItemsForSorting = ["a", "B", "c"]; 
//def String sortOrder = "ASC" or "DESC" 

def boolean sortItemsWithCollator(ArrayList listOfItemsForSorting, String sortOrder) { 
    Collator myCollator = Collator.getInstance(); 
    // check if the array itself is less than 2 items if so, it's clearly no need for sorting. 
    if (listOfItemsForSorting.size() < 2) { 
     return true; 
    } 
    else if (sortOrder.equals("ASC")){ 
     for (def i = 0; i < listOfItemsForSorting.size() - 1; i++) { 
       if (myCollator.compare(listOfItemsForSorting[i], listOfItemsForSorting[i + 1]) > 0) { 
       return false; 
      } 
     } 
    } 
    else{ 
     for (def i = 0; i < listOfItemsForSorting.size() - 1; i++) { 
       if (myCollator.compare(listOfItemsForSorting[i], listOfItemsForSorting[i +1]) < 0) { 
       return false; 
      } 
     } 
    } 
    return true; 
} 

このメソッドは、ブール値を返します。

関連する問題