Arrays.sort ямар төрлийг ашигладаг вэ?

Агуулгын хүснэгт:

Arrays.sort ямар төрлийг ашигладаг вэ?
Arrays.sort ямар төрлийг ашигладаг вэ?
Anonim

Албан ёсны JavaDoc-д дурдсанчлан Массив. эрэмбэлэх нь хос эргэлттэй Quicksort Quicksort Quicksort нь хуваах ба ялах алгоритм юм. Энэ нь массиваас 'пивот' элементийг сонгоод бусад элементүүдийг пивотоос бага эсвэл их байгаа эсэхээс хамааран хоёр дэд массив болгон хуваах замаар ажилладаг. … Дараа нь дэд массивуудыг рекурсив байдлаар эрэмбэлдэг. https://en.wikipedia.org › wiki › Quicksort

Quicksort - Википедиа

команд дээр. Энэ нь O(n log(n)) гүйцэтгэлийг санал болгодог бөгөөд ердийн (нэг пивот) Quicksort хэрэгжүүлэлтээс илүү хурдан байдаг. Гэсэн хэдий ч, энэ нь нэгтгэх эрэмбэлэхийн тогтвортой, дасан зохицох, давталттай хэрэгжилтийг ашигладаг. Компьютерийн шинжлэх ухаанд нэгтгэх эрэмбэлэх (мөн нэгтгэх гэж ихэвчлэн бичдэг) нь үр ашигтай, ерөнхий зориулалт, харьцуулалтад суурилсан эрэмбэлэлт юм. алгоритм. Ихэнх хэрэгжүүлэлт нь тогтвортой эрэмбийг гаргадаг бөгөөд энэ нь оролт, гаралтад тэнцүү элементүүдийн дараалал ижил байна гэсэн үг юм. https://en.wikipedia.org › wiki › Merge_sort

Нэгдүүлэх төрөл - Википедиа

объектуудын массивын алгоритм.

Массивууд өсөх дарааллаар эрэмбэлдэг үү?

Анхдагч массивыг буурах дарааллаар эрэмбэлэх цорын ганц арга бол эхлээд массивыг өсөх дарааллаар эрэмбэлээд дараа нь массивыг урвуу байрлалд оруулах. Энэ нь хоёр хэмжээст команд массивын хувьд бас үнэн юм. Өөрийн командуудыг тус тусын объект руу хөрвүүлэх.

Масивын хувьд аль төрөл нь хамгийн тохиромжтой вэ?

Quicksort . Quicksort ньхамгийн үр дүнтэй эрэмбэлэх алгоритмуудын нэг бөгөөд энэ нь түүнийг хамгийн их хэрэглэгддэг алгоритмуудын нэг болгодог. Хамгийн эхний хийх зүйл бол пивот дугаар сонгох бөгөөд энэ тоо нь өгөгдлийг тусгаарлах бөгөөд түүний зүүн талд түүнээс бага тоо, баруун талд их тоо байна.

Эрэмбэлэгдсэн массивын хувьд аль эрэмбэлэх алгоритм хамгийн тохиромжтой вэ?

Оруулах эрэмбэ нь массив аль хэдийн эрэмблэгдсэн эсвэл "эрэмбэлэхэд ойрхон" байвал илүү үр дүнтэй ажиллана. Сонголтоор эрэмбэлэх нь үргэлж O(n) свопыг гүйцэтгэдэг бол оруулах эрэмбэ нь дундаж болон хамгийн муу тохиолдолд O(n2) свопыг гүйцэтгэдэг. Санах ойд бичих нь уншихаас хамаагүй үнэтэй байвал эрэмбэлэх нь дээр.

Масивыг шугаман эрэмбэлэх үү?

Тийм, массив. Миний мэдэх Java-н бүх стандарт номын сангийн хэрэгжүүлэлт дэх sort (int) нь харьцуулалтад суурилсан эрэмбэлэхийн жишээ бөгөөд тиймээс хамгийн муу нарийн төвөгтэй байдал Ω(n log n) байх ёстой. Ялангуяа Oracle Java 7 нь бүхэл тооны хэт ачааллыг давхар эргүүлэх хурдан эрэмбэлэх хувилбарыг ашигладаг бөгөөд энэ нь Ω(n2) хамгийн муу тохиолдолтой.

Зөвлөмж болгож буй: