jon-tyson-FlHdnPO6dlw-unsplash

สามัญจากนั้นเวลาแห่งดีฉันสลักรหัส เราจะใช้เวลากับงานควานข่าวสาร ศึกษาปัญญานวชาตๆ หรือนั่งแก้บัคแจกรายการสรรพสิ่งดีฉันกระทำได้ เมื่อเขียนได้ผลจึ่งทดลองรันทดสอบ ถ้าหากกระทำได้มาประการแห่งประสงค์ไม่ประกอบด้วยบัคใดๆ ก็ดำรงฐานะสิ่งเสร็จสิ้น นำเจียรส่ง ไม่ก็เอาจรใช้งานได้มา ซึ่งกระทั่งจะเป็นการไม่มีเงินรันได้ก็น่าหอบและกินเวลาไปยิ่งนักแล้วแต่ตวาดโปรแกรมสรรพสิ่งฉันเลี่ยนทำเจริญแค่ไรแหละ ? ถ้าโปรแกรมสิ่งของฉัน BigO มากหลาย หลังจากนั้นเคสแห่งหนฉันทำการทดลองเลี่ยนก็ไม่ไหวใช้เวลายิ่งนักพอ ดีฉันก็อาจจะไม่ทันการตรวจุเห็นถึงขนาดสิ่งของ BigO ณรายการสรรพสิ่งฉัน ครั้นนำไปใช้งานแน่ๆแล้วพบข้อมูลแห่งจำเป็นต้องเอามาให้คะแนนหลากหลายขึ้นไป อาจจะเป็นเหตุให้โปรแกรมของฉันกระทำไม่ทันเวลากว่าแห่งคิดเอาไว้ หรือถึงขั้นใช้งานไม่ไหวเลยทีเดียวแล้ว Big(O) คือกระไร ?ถ้าหากรายการที่ฉันจารึกมี array ที่ประกอบด้วยประกาศผู้ซื้อปริมาณ 100 ข้อมูล แล้วดีฉันต้องการชดใช้ข่าวสารสิ่งของผู้บริโภคมนุษย์เอ็ด ก็จำเป็นต้องขับไล่ประกาศตั้งแต่ร่างกายจำเดิมเพื่อที่จะควานหาข้อมูลที่ดีฉันมุ่ง สมมติว่าโชคดีประเดี๋ยวก็จะประสบตั้งแต่ตัวเริ่มแรกๆ แต่สมมติว่าโชคร้ายก็จักเผชิญที่เนื้อตัวบ๊วยเลย ซึ่งสมมติว่าก่อกำเนิดเรื่องนี้ขึ้นไปมาบอกความดุรายการสรรพสิ่งฉันจะต้องใช้เวลาและทรัพยากรพอกับการงาน 100 รอบ แล้วถ้าหากรายการสิ่งของดีฉันใหญ่ขึ้นประกอบด้วยข่าวสารจำเริญ ข้อมูลสรรพสิ่งฉันจักปราศจากเพียงผลรวม 100 จริงๆ คงจะเป็นหลักล้าน หรือว่า หลักเขต 100กล้อน ก็จักต้องรันติดสอยห้อยตามผลรวมข่าวสารเหล่านั้น ผลรวมการทำงานในกรณีที่มากที่สุดนี้แหละที่เราเรียกหาดุ BigO ซึ่งจักบอกให้เห็นดุโปรแกรมสิ่งของดีฉันสามารถกินทรัพยากรได้ตรากตรำเพียงใด การจดรายการแจกประกอบด้วย BigO น้อยที่สุดแล้วจึงดำรงฐานะสิ่งแห่งหนน่าตั้งอกตั้งใจดำรงฐานะเหลือใจBig O ประกอบด้วยกี่ชนิด ?กาลเวลาพูดถึง Big O Notation ดีฉันจักเรียกกันว่า O(n) ซึ่ง n จะใช้ทำแทนปริมาณหรือว่าขนาดสรรพสิ่งข้อมูลที่จะไม่ผิดนำเจียรประเมินผลด้วยอัลกคู่ปรับทึมๆของฉัน ถ้าเผชิญดูณผมปลอมิอ้วนเดีงามยกรณี Big O Notation จะเหลือบเห็นแหวมีอยู่ครอบครองทศประการ เสียแต่ว่าที่บทความตรงนี้ดีฉันจะยกลงมาแค่ 7 อย่าง แห่งน่าจะเข้าใจได้มาสะดวกและเพียงพอทาบงานคำกล่าวเก้าน BigO ในโค้ดสิ่งของฉัน โดยเราจะจุดโฟกัสแห่งหนปริมาณรอบหรือว่าระยะเวลาแห่งชดใช้ณการงานของแต่ละชนิด1. O(1) : constantเหตุด้วย BigO เนื้อตัวจำเดิมตรงนี้เป็น BigO ที่ดีงามเต็มที่ ไม่ว่า input จักครอบครองเช่นไรก็กินเวลากระทำเพียง 1 ทีเท่าเดิมเทียบเท่า อาทิ การดราฟท์ดุจำนวน input เป็นเลขคู่หรือว่าเลขคี่ จากโค้ดต้นแบบด้านล่างนี้ ไม่ว่าใส่คุณประโยชน์ 0 หรือ 9999999 ก็ทำเช่นกันการ mod ด้วย 2 หนเดียวดุลdef evenOrOdd(num): if (num % 2 == 0): print(“even”) else: print(“odd”) evenOrOdd(0) evenOrOdd(9999999) 2. O(log n) : logarithmicดำรงฐานะ BigO แห่งชั้นนำ เพราะว่าเป็นการดำเนินการที่จะลดจำนวนลูปล่อยวางเศษหนึ่งส่วนสองนึงครั้งใดก็ตามทำเป็นการเจียร 1 รอบ ร่างกายอย่างอหงิกัลกอรึครึ้มแห่งมีครอบครองอย่างตรงนี้ก็คือว่าการก่อ Binary Search ที่จะค้นหายศของจำนวนแห่งหนฉันมุ่งใน array แห่งหนลำดับเอาไว้หลังจากนั้นเป็นต้นว่าดีฉันมี array สิงสู่หนึ่งร่างกายแห่งจำนวนชั้นในเรียงจากโหรงเหรงไปจัง กับประสงค์หา ฐานันดรของเลขที่มุ่ง ถ้าแสวงยศเช่นกันวิธี Binary Search ก็จักตัดทอนผลรวมรอบที่จะต้องโฉบลูปเพื่อที่จะค้นหาลงเมื่อใดก็ตามอีกทั้งเปล่าประสบdef binarySearch(arr, value, first, last): if last >= first: mid = first + (last – first) // 2 if arr[mid] == value: return mid elif arr[mid] > value: return binarySearch(arr, value, first, mid – 1) else: return binarySearch(arr, value, mid + 1, last) else: return -1 numArray = [1, 2, 7, 10, 22, 31] number = 22 result = binarySearch(numArray, number, 0, len(numArray) – 1) print(result) 3. O(n) : linearBigO อย่างนี้อีกต่างหากจัดดำเนินการได้ดิบได้ดีสิงสู่ เพราะจะกินเวลาณการทำงานพอๆ กับ input แบบอย่างแห่งเห็นภาพสะดวกที่สุดคืองานค้นหายศของข่าวสารที่ต้องการขนมจากที่ array แห่งหนไม่ไหวจัดเรียงประกาศ ซึ่ง BigO จะนับจากเคสแห่งหนชั่วร้ายเต็มที่ เช่นงานแห่งหนข้อมูลที่ฉันประสงค์สิงสู่ฐานันดรโหล่ใน array เหมือนโค้ดต่อจากนี้ไปdef searchNumber(arr, value): for i in range(len(arr)): if(arr[i] == value): return i numArray = [7, 16, 2, 0, 5, 1, 30] number = 30 result = searchNumber(numArray, number) print(result) 4. O(n log n) : linearithmicเหตุด้วยอย่างตรงนี้จัดประกอบด้วยความไวระดับกลาง คือสำเร็จทำงานลูปฉบับร่าง n รอบ ที่ประกอบด้วยลูปต้นร่าง log n รอบสิงสู่ชั้นใน ร่างกายอย่างอหงิกัลกคู่ปรับมัวซัวที่เข้าไปเคสตรงนี้ก็ตกว่างาน Merge Sort ซึ่งงานแถวสักนิด ทดลองติดตามไปอ่านโดยละเอียดณ วิกมนุษยชาติพีเดีย หรือว่าเผชิญดูใน เว็บนบานี้ ได้5. O(n^2) : quadraticBigO อย่างใช้เวลาที่การทำงานเกินชั้นแห่งเรียกดุกลางๆ จนเริ่มอยู่ในเกณฑ์แย่จากนั้น เพราะเวลาที่ณการทำงานจักมากขึ้น 4 เท่ากัน พอประกาศทวี 2 ทัดเทียม การใช้งานแห่งประกอบด้วย BigO ชั้น เช่น งานค้นหาข้อมูลแห่งหนซ้ำกันที่ arraydef duplicateCheck(arr): for i in range(len(arr)): a = arr[i] for j in range(i+1, len(arr)): b = arr[j] print(a, b) if(a == b): return “duplicated” return “not duplicate” numArray = [1,3,5,9] result = duplicateCheck(numArray) print(result) 6. O(2^n) : exponentialBigO ชั้นนี้อยู่ในเกณฑ์วิกฤตแล้ว ข้อมูลแค่เพียงกระผีกก็มีการงานที่มากมายdef fibonacci(n): if n==1: return 0 elif n==2: return 1 else: return (fibonacci(n-1)+fibonacci(n-2)) print(fibonacci(5)) print(fibonacci(21)) 7. O(n!) : factorialชนิดโหล่แห่งหนกว้านมาที่วันนี้เรียกได้มาตวาดเลวร้ายเต็มที่เหตุด้วย BigO อัลกคู่ปรับมัวซัวแห่งหนชดใช้ณชีวิตจริงก็ตามชื่อเสียงเรียงนามของ BigO ตรงนี้เกินก็คืองานถ้อยคำนวนคุณค่า factorialdef factorial(num): if(num == 1): return 1 for i in range(0, num): return num * factorial(num-1) print(factorial(9)) แถมพกตารางรายการจับใจความระยะเวลาในการประมวลผลสรรพสิ่ง BigO แต่ละชนิด เพราะว่าสัดส่วนประกาศทวีในจำใจ x และระยะเวลามากขึ้นที่ขัดสน y จักเหลือบเห็นดุ BigO ประการขนองๆกินเวลาเพิ่มยิ่งนักฐานกกกกก ดูขนมจากกราฟจึ่งน่าครั้นเข้าใจจรดความสำคัญสรรพสิ่งการคิด BigO ในโปรแกรมสรรพสิ่งเราแหวประธานสัดส่วนใด เพราะสมมติว่าไม่ชาคริตจ่ายดีงาม รายการอาจจะกระทำช้าครอบครองชนชาติ หรือว่าถึงขนาดสำนักงานไม่ได้พ้นเทียว ถ้าหากคุณแยแสพัฒนา สตาร์ถักัพ แอปพลิเคชัน และ เทคโนโลยีสรรพสิ่งตนเอง ?อย่ารอเลยกำหนด ! เรียนรู้ความชำนาญปีกดิจิทัลเพื่ออัพเกรดความเก่งกาจสรรพสิ่งคุณ เริ่มตั้งแต่รากฐาน ครบถ้วนปฏิบัติจริงณแนวทางหลักสูตรออนไลน์วันนี้ Programming for Everyone X ฿3,990.00 ฿990.00฿3,990.00 ฿990.00Add to cart Advance Problem Solving ฿2,590.00 ฿2,090.00฿2,590.00 ฿2,090.00Add to cart ได้มาความชื่นชอบสูงสุด Complete Java Programming (ทนทาน) ฿3,590.00 ฿3,290.00฿3,590.00 ฿3,290.00Add to cart Game Development With Unity ฿2,590.00 ฿1,290.00฿2,590.00 ฿1,290.00Add to cart