กำหนดอาร์เรย์และช่วงของอาร์เรย์ [startval, endval] อาร์เรย์ถูกหารด้วยสามส่วน
- องค์ประกอบทั้งหมดที่เล็กกว่า startval มาก่อน
- องค์ประกอบทั้งหมดในช่วง startval ถึง endval อยู่ในลำดับต่อไป
- องค์ประกอบทั้งหมดที่มากกว่าค่าสิ้นสุดจะปรากฏในตอนท้าย
ตัวอย่าง
Input: A = [1, 14, 51, 12, 4, 2, 54, 20, 87, 98, 3, 1, 32] startval = 14, endval = 54 Output: A = [1, 12, 4, 2, 3, 1, 14, 51, 20, 32,54, 87, 98]
อัลกอริทึม
Step1: First the list is divided into three parts, first part will contain elements less than startval, second part will contain elements between startval and endval and third part will contain elements greater than endval. Step2: Concatenate all three parts together.
โค้ดตัวอย่าง
def partition_array(input, lowVal, highVal): # Separate input list in three parts my_first = [ num for num in input if num<lowVal ] my_second = [ num for num in input if (num>=lowVal and num<=highVal) ] my_third = [ num for num in input if num>highVal ] # concatenate all three parts print(my_first + my_second + my_third) # Driver program if __name__ == "__main__": my_input = [10, 140, 50, 200, 40, 20, 540, 200, 870, 980, 30, 10, 320] my_lowVal = 140 my_highVal = 200 partition_array(my_input, my_lowVal, my_highVal)
ผลลัพธ์
[10, 50, 40, 20, 30, 10, 140, 200, 200, 540, 870, 980, 320]