Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

เขียนโปรแกรม Linear Search ใน Python


Linear Search เป็นเทคนิคการค้นหาเพื่อค้นหาค่าเฉพาะจาก Array นี่คือเทคนิคค้นหาที่ง่ายที่สุด

ในเทคนิคค้นหานี้

  • ค่าที่ต้องการค้นหาจะถูกเปรียบเทียบกับทุกองค์ประกอบใน Array

  • หากพบค่า Index ขององค์ประกอบจะถูกคืนค่า

  • หากองค์ประกอบเฉพาะนั้นไม่มีอยู่ทั่ว Array ให้คืนค่า -1 หรือข้อความที่เกี่ยวข้อง

Pseudocode

linearSearch(int array[], int value):
    for i=0 to len(array):
        if(array[i]==value):
            Element is Present
    //outside for loop
    Element Not Present // element not found in the whole array


ตัวอย่าง

def linearSearch(arr,value):
    for i in range(len(arr)):
        if(arr[i]==value):
            return i
    return -1
array=[1,2,3,4,5,6,7,8,9,10]
value=5
a=linearSearch(array,value)
if(a==-1):
    print("Element not present")
else:
    print("Element present at index",a)

ผลลัพธ์

Element present at index 4

Time Complexity

Time Complexity แย่ที่สุดของ Linear Search คือ O(n) กรณีแย่ที่สุดเกิดเมื่อองค์ประกอบอยู่ที่ Index สุดท้าย หรือไม่มีอยู่เลย

Time Complexity ดีที่สุดคือ O(1) เกิดเมื่อองค์ประกอบอยู่ที่ Index แรก

Improved Linear Search

Time Complexity แย่ที่สุดของ Linear Search สามารถปรับปรุงเป็น O(n/2) ได้ โดยใช้ Two Pointers คือ Left และ Right และทำการเปรียบเทียบ 2 ครั้งพร้อมกัน ลด Complexity แย่ที่สุดเหลือ O(n/2)

ตัวอย่าง

def linearSearch(arr,value):
    left=0
    right=len(arr)-1
    while(left<=right):
        if(arr[left]==value):
            return left
        elif(arr[right]==value):
            return right
        left+=1
        right-=1
    return -1
array=[1,2,3,4,5,6,7,8,9,10]
value=10
a=linearSearch(array,value)
if(a==-1):
    print("Element not present")
else:
    print("Element present at index",a)

ผลลัพธ์

Element present at index 9

ในตัวอย่างข้างต้น องค์ประกอบที่อยู่ Index สุดท้าย ถูกพบในรอบแรกเอง หากใช้วิธีแรก จะใช้ 10 รอบ

หากไม่พบองค์ประกอบ Complexity แย่ที่สุดคือ O(n/2) เนื่องจากจำนวนรอบรวมเป็น n/2 ในวิธีที่สอง

Linear Search มีประโยชน์แค่ไหน?

Linear Search นادرًا ما ใช้ เพราะมีอัลกอริทึมค้นหาที่ดีกว่า เช่น Binary Search ที่ให้ Time Complexity ดีกว่า Linear Search ไม่มีประสิทธิภาพสำหรับ Array ขนาดใหญ่