二元選擇排序

2021-08-08 04:51:57 字數 1083 閱讀 9330

__author__ = 'zhouhai'

'''簡單選擇排序,每趟迴圈只能確定乙個元素排序後的定位。

我們可以考慮改進為每趟迴圈確定兩個元素(當前趟最大和最小記錄)的位置,從而減少排序所需的迴圈次數。

改進後對n個資料進行排序,最多隻需進行[n/2]趟迴圈即可'''

import math

def selectsort(numbers):

if len(numbers) <= 1:

return numbers

#先從前2個數字裡面選擇最小的

min_number = numbers[0]

if numbers[1] < numbers[0]:

min_number = numbers[1]

lenght = len(numbers)

n = int(lenght/2)

m = 0

while m < n:

#遍歷一遍以後,最大的數會跑到最後面,最小的數會跑到最前面

for i in range(0+m,lenght-1-m) :

if numbers[i] > numbers[i+1]:

temp = numbers[i]

numbers[i] = numbers[i+1]

numbers[i+1] = temp

if numbers[i] < min_number:

min_number = numbers[i]

numbers[i] = numbers[0+m]

numbers[0+m] = min_number

m += 1

min_number = numbers[m]

if numbers[m] > numbers[m+1]:

min_number = numbers[m+1]

print(numbers)

return numbers

if __name__ =='__main__':

numbers = [78,11,31,23,34,345,1,4,5,4,9,8,7,8]

print(selectsort(numbers))

python選擇排序二元選擇 二元選擇排序

注 本題只需要提交標記為修改部分之間的 c 語言方式。二元選擇排序 對傳統的選擇排序演算法改進,在一趟比較過程中,同時記錄最大值和最小值位置,將最小值與第乙個元素交換,最大值與最後乙個元素交換,即一趟比較確定兩個元素,對剩下的序列重複上述過程,直至序列為空。include using namespa...

二元選擇排序

description 注 本題只需要提交標記為修改部分之間的 c 語言方式。二元選擇排序 對傳統的選擇排序演算法改進,在一趟比較過程中,同時記錄最大值和最小值位置,將最小值與第乙個元素交換,最大值與最後乙個元素交換,即一趟比較確定兩個元素,對剩下的序列重複上述過程,直至序列為空。include u...

二元選擇排序

二 描述 簡單選擇排序 每趟迴圈只能確定乙個元素排序後的定位。二元選擇排序 我們可以考慮改進為每趟迴圈確定兩個元素 當前趟最大和最小記錄 的位置,從而減少排序所需的迴圈次數。三 private static void binaryselectsort int arr if arr j arr min...