2017-06-23 9 views
-1

私は、指定された配列がソートされていないかどうかをチェックしながら、最良のケース時間の複雑さを調べようとしています。ベストケース時間配列がソートされていないかどうかを確認する複雑さ

これは、配列がソートされているかソートされていないかどうかを調べる最速の方法であり、時間の複雑さはO(n)でなければならないと思います。

for (i = 0; i < a.length-1; i++) { 
    if (a[i] < a[i + 1]) { 
    return true; 
    } else { 
    return false; 
    } 
} 

または間違っていますか?

+0

_last_配列要素の 'a [i + 1]'にアクセスしようとすると、これがエラーになる可能性があります。ループは 'i CBroe

+2

あなたのコードは正しい配列境界を考慮していません(条件は 'i + 1 clemens

+0

@CBroeコードは 'a [i + 1]'の範囲外(UB)であるが、最初の反復を超えることはない。 –

答えて

2

はいこれは、O(n)となり、それはas fast as it getsです。


また、あなたはこれを変更する必要があります。これに

for (i = 0; i < a.length; i++) 

for (i = 0; i < a.length - 1; i++) 

あなたがa[i + 1にアクセスし、あなたが範囲外に行きたくないので。さらに、返品明細書を交換する必要があります。

+0

これはもっと良いでしょう: '' for(i = 0; i + 1 DAle

+0

なぜ@説明してください。 – gsamaras

+0

'a.length == 0'の場合の無限ループを避けるために – DAle

関連する問題