Cho một mảng và phạm vi của mảng [startval, endval]. Array được chia thành ba phần.
- Tất cả các phần tử nhỏ hơn giá trị bắt đầu được ưu tiên trước.
- Tất cả các phần tử trong dải ô từ giá trị bắt đầu đến giá trị kết thúc sẽ xuất hiện tiếp theo.
- Cuối cùng, tất cả các phần tử lớn hơn endval xuất hiện.
Ví dụ
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]
Thuật toán
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.
Mã mẫu
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)
Đầu ra
[10, 50, 40, 20, 30, 10, 140, 200, 200, 540, 870, 980, 320]