ວິທະຍາສາດຄອມພິວເຕີແມ່ນທັງຫມົດກ່ຽວກັບການເຂົ້າໃຈຄວາມສັບສົນຂອງ algorithms ແລະໂຄງສ້າງຂໍ້ມູນ.
ທ່ານມີລາຍການຂອງລາຍການທີ່ຕ້ອງການຈັດລຽງລໍາດັບ, ແຕ່ວ່າທ່ານບໍ່ມີເວລາຫຼືຊັບພະຍາກອນທີ່ຈະນໍາໃຊ້ວິທີການຈັດລຽງສະລັບສັບຊ້ອນຫຼາຍ.
ການຈັດລຽງການແຊກແມ່ນໜຶ່ງໃນຂັ້ນຕອນການຈັດຮຽງທີ່ງ່າຍທີ່ສຸດ, ແຕ່ມັນສາມາດຊ້າໄດ້ສຳລັບລາຍການໃຫຍ່.
ການປະຕິບັດງ່າຍແລະຄວາມເຂົ້າໃຈໄດ້ເຮັດໃຫ້ວິທີການນີ້ເປັນທີ່ນິຍົມໃນບັນດານັກຂຽນໂປລແກລມ. ມັນສົມບູນແບບສໍາລັບບັນຊີລາຍຊື່ຂະຫນາດນ້ອຍຫຼືເວລາທີ່ທ່ານຕ້ອງການການແກ້ໄຂດ່ວນ.
ໃນການຕອບ blog ນີ້, ພວກເຮົາຈະເບິ່ງຄວາມສັບສົນທີ່ໃຊ້ເວລາຂອງການຈັດລຽງການແຊກ. ສູດການຄິດໄລ່ນີ້ຖືກນໍາໃຊ້ເພື່ອຈັດຮຽງອາເຣ, ແລະມັນມີເວລາແລ່ນຂອງ O(n2). ນີ້ຫມາຍຄວາມວ່າຄວາມສັບສົນເວລາເພີ່ມຂຶ້ນກັບຂະຫນາດຂອງອາເລ.
ແນວໃດກໍ່ຕາມ, ສູດການຄິດໄລ່ນີ້ສາມາດໄວກວ່າວິທີການຈັດຮຽງອື່ນໆ, ເຊັ່ນ: ການຈັດລຽງໄວ.
ລອງພິຈາລະນາເບິ່ງວ່າການຈັດລຽງການແຊກໃສ່ເຮັດວຽກແນວໃດ!
Insertion Sort Algorithm ແມ່ນຫຍັງ?
ອົງປະກອບຫນຶ່ງໃນເວລາ, ການຈັດລຽງການແຊກສ້າງ array ທີ່ສາມາດຈັດລຽງໄດ້, ເຊິ່ງມັກຈະເອີ້ນວ່າບັນຊີລາຍຊື່.
ຕົວຢ່າງ, ການຈັດລຽງແມ່ນໃຊ້ໃນໂປຼແກຼມຄອມພິວເຕີທີ່ສັບສົນເຊັ່ນ: compilers, ບ່ອນທີ່ຄໍາສັ່ງຂອງ tokens ມີຄວາມສໍາຄັນຕໍ່ການຕີຄວາມຫມາຍຂອງໂຄງການ.
Insertion Sort ເຮັດວຽກແນວໃດ?
ເມື່ອພວກເຮົາໃຊ້ການຈັດລຽງການແຊກເພື່ອຈັດຮຽງອາເຣ, ສູດການຄິດໄລ່ເລີ່ມຕົ້ນໂດຍການຊອກຫາລາຍການທີ່ນ້ອຍທີ່ສຸດໃນລາຍການ ແລະໃສ່ມັນໃສ່ໃນຕໍາແໜ່ງທີ່ຖືກຕ້ອງ.
ຫຼັງຈາກນັ້ນ, ມັນຊອກຫາລາຍການຂະຫນາດນ້ອຍສຸດຕໍ່ໄປແລະໃສ່ມັນເຂົ້າໄປໃນຕໍາແຫນ່ງທີ່ຖືກຕ້ອງ, ແລະອື່ນໆ.
ສູດການຄິດໄລ່ເຮັດວຽກໂດຍການ looping ຜ່ານບັນຊີລາຍຊື່, ປຽບທຽບແຕ່ລະລາຍການກັບຫນຶ່ງທີ່ມາກ່ອນມັນ.
ຖ້າລາຍການຢູ່ໃນລໍາດັບທີ່ບໍ່ຖືກຕ້ອງ, ສູດການຄິດໄລ່ຈະປ່ຽນພວກມັນ. ຫຼັງຈາກນັ້ນ, ມັນກວດເບິ່ງວ່າບັນຊີລາຍຊື່ຖືກຈັດຮຽງ, ແລະຖ້າມັນເປັນ, ສູດການຄິດໄລ່ຈະສິ້ນສຸດລົງ.
ໃນການປະຕິບັດ, ການຈັດລຽງການແຊກແມ່ນມັກຈະຖືກປະຕິບັດໂດຍໃຊ້ລະຫັດສອງສາມເສັ້ນ, ເຮັດໃຫ້ມັນເປັນທາງເລືອກທີ່ນິຍົມສໍາລັບການຈັດຮຽງແຖວຂະຫນາດນ້ອຍ. ຢ່າງໃດກໍ່ຕາມ, ຄວາມສັບສົນຂອງເວລາຄວນໄດ້ຮັບການພິຈາລະນາໃນເວລາທີ່ໃຊ້ສູດການຄິດໄລ່ນີ້.
ຕົວຢ່າງ:
ນີ້ແມ່ນຕົວຢ່າງຂອງວິທີການຈັດລຽງການແຊກໃສ່ເຮັດວຽກ. ພວກເຮົາຈະໃຊ້ array ຕໍ່ໄປນີ້:
1, 2, 3, 4, 5, 6
ສູດການຄິດໄລ່ເລີ່ມຕົ້ນໂດຍການຊອກຫາລາຍການທີ່ນ້ອຍທີ່ສຸດໃນບັນຊີລາຍຊື່, ເຊິ່ງແມ່ນ 1. ຫຼັງຈາກນັ້ນໃສ່ມັນເຂົ້າໄປໃນຕໍາແຫນ່ງທີ່ຖືກຕ້ອງ, ຕໍາແຫນ່ງທໍາອິດ. ຫຼັງຈາກນັ້ນ, ມັນຊອກຫາລາຍການຂະຫນາດນ້ອຍສຸດຕໍ່ໄປ, ເຊິ່ງແມ່ນ 2. ມັນໃສ່ມັນເຂົ້າໄປໃນຕໍາແຫນ່ງທີ່ຖືກຕ້ອງ, ເຊິ່ງເປັນຕໍາແຫນ່ງທີສອງ.
ຫຼັງຈາກນັ້ນ, ມັນຊອກຫາລາຍການຂະຫນາດນ້ອຍສຸດຕໍ່ໄປ, ເຊິ່ງແມ່ນ 3. ມັນໃສ່ມັນເຂົ້າໄປໃນຕໍາແຫນ່ງທີ່ຖືກຕ້ອງ, ເຊິ່ງເປັນຕໍາແຫນ່ງທີສາມ.
ຫຼັງຈາກນັ້ນ, ມັນຊອກຫາລາຍການຂະຫນາດນ້ອຍສຸດຕໍ່ໄປ, ເຊິ່ງແມ່ນ 4. ມັນໃສ່ມັນເຂົ້າໄປໃນຕໍາແຫນ່ງທີ່ຖືກຕ້ອງ, ເຊິ່ງເປັນຕໍາແຫນ່ງທີ່ສີ່, ແລະອື່ນໆ. ຕອນນີ້ຈັດຮຽງລາຍຊື່ແລ້ວ!
ພວກເຮົາສາມາດເຫັນໄດ້ຈາກຕົວຢ່າງທີ່ algorithm ໃຊ້ເວລາຫົກປຽບທຽບແລະ swaps ເພື່ອຈັດຮຽງບັນຊີລາຍຊື່. ນີ້ແມ່ນຍ້ອນວ່າມັນໃຊ້ເວລາ n2 ການປຽບທຽບແລະແລກປ່ຽນເພື່ອຈັດຮຽງບັນຊີລາຍຊື່ຂອງລາຍການ n. ໃນກໍລະນີນີ້, n=6.
ວິທີການປັບປຸງຄວາມຊັບຊ້ອນເວລາການຈັດລຽງການແຊກ?
ໃນຂະນະທີ່ການຈັດລຽງການແຊກມີ runtime ຂອງ O(n2), ມັນສາມາດປັບປຸງໄດ້ໂດຍການໃຊ້ລະບົບການຈັດລຽງທີ່ດີກວ່າ, ເຊັ່ນ: ການຈັດລຽງໄວ.
Quicksort ມີ O(n log n) runtime, ເຊິ່ງໄວກວ່າ O(n2).
ຢ່າງໃດກໍຕາມ, ໃນບາງກໍລະນີ, ການຈັດລຽງການແຊກສາມາດໄວກວ່າການຈັດຮຽງໄວ.
ຕົວຢ່າງ, ຖ້າລາຍຊື່ຢູ່ໃນລໍາດັບແລ້ວ, ການຈັດລຽງການແຊກຈະໃຊ້ເວລາຫນ້ອຍກວ່າການຈັດຮຽງໄວ.
ໃນການປະຕິບັດ, ການຈັດລຽງການແຊກແມ່ນມັກຈະຖືກປະຕິບັດໂດຍໃຊ້ລະຫັດສອງສາມເສັ້ນ, ເຮັດໃຫ້ມັນເປັນທາງເລືອກທີ່ນິຍົມສໍາລັບການຈັດຮຽງແຖວຂະຫນາດນ້ອຍ.
ຢ່າງໃດກໍ່ຕາມ, ຄວາມສັບສົນຂອງເວລາຄວນໄດ້ຮັບການພິຈາລະນາໃນເວລາທີ່ໃຊ້ສູດການຄິດໄລ່ນີ້.
ຄວາມສັບສົນເວລາ
ກໍລະນີທີ່ສັບສົນທີ່ສຸດ O(n2):
ຄວາມສັບສົນເວລາເພີ່ມຂຶ້ນກັບຂະຫນາດຂອງອາເຣ. ມັນໃຊ້ເວລາ n2 ການປຽບທຽບແລະ swaps ເພື່ອຈັດຮຽງບັນຊີລາຍຊື່ຂອງ n ລາຍການ.
ຕົວຢ່າງ, ຖ້າພວກເຮົາມີ array ຂອງຂະຫນາດ 1000, algorithm ຈະໃຊ້ເວລາ 1,000,000 ການປຽບທຽບແລະ swaps ເພື່ອຈັດຮຽງ array.
ຄວາມຊັບຊ້ອນກໍລະນີທີ່ດີທີ່ສຸດ O(n):
ຄວາມຊັບຊ້ອນເວລາແມ່ນຄືກັນກັບຂະໜາດຂອງອາເຣ input. I
t ໃຊ້ n ການປຽບທຽບແລະ swaps ເພື່ອຈັດຮຽງບັນຊີລາຍຊື່ຂອງລາຍການ n. ຕົວຢ່າງ, ພິຈາລະນາ array ຂອງຂະຫນາດ 5. algorithm ຈະໃຊ້ຫ້າການປຽບທຽບແລະ swaps ເພື່ອຈັດຮຽງ array.
ຄວາມຊັບຊ້ອນກໍລະນີສະເລ່ຍ O(n2):
ຄວາມສັບສົນຂອງເວລາແມ່ນລະຫວ່າງຄວາມສັບສົນຂອງກໍລະນີທີ່ຮ້າຍແຮງທີ່ສຸດແລະດີທີ່ສຸດໃນກໍລະນີນີ້.
ມັນໃຊ້ເວລາ n2 ການປຽບທຽບແລະ swaps ເພື່ອຈັດຮຽງບັນຊີລາຍຊື່ຂອງ n ລາຍການ.
ດັ່ງນັ້ນ, ການຈັດຮຽງແບບແຊກແມ່ນລະບົບການຈັດຮຽງທີ່ໝັ້ນຄົງ.
ເປັນຫຍັງການຈັດຮຽງແຊກຈຶ່ງມີຄວາມໝັ້ນຄົງ?
ການຈັດລຽງການແຊກແມ່ນຄົງທີ່ເນື່ອງຈາກວ່າມັນຮັກສາລໍາດັບຂອງອົງປະກອບທີ່ເທົ່າທຽມກັນໃນ array ການປ້ອນຂໍ້ມູນ.
ນີ້ແມ່ນສິ່ງສໍາຄັນສໍາລັບຄໍາຮ້ອງສະຫມັກຈໍານວນຫຼາຍ, ເຊັ່ນ: ການດຶງຂໍ້ມູນຫຼືການວິເຄາະທາງດ້ານການເງິນ. ຕົວຢ່າງ: ຖ້າພວກເຮົາມີສອງບັນຊີລາຍຊື່ຂອງຕົວເລກແລະຕ້ອງການປຽບທຽບພວກມັນ, ພວກເຮົາຈໍາເປັນຕ້ອງໃຫ້ແນ່ໃຈວ່າຄໍາສັ່ງຂອງອົງປະກອບຖືກຮັກສາໄວ້.
ຖ້າລາຍຊື່ບໍ່ໄດ້ຖືກຈັດຮຽງ, ພວກເຮົາຈະບໍ່ປຽບທຽບພວກມັນຢ່າງຖືກຕ້ອງ.
ອອກຈາກ Reply ເປັນ