选择排序-Python & Java

选择排序:
1、找出最小的数值放在第一位
2、找出剩余数据中最小的数值放在第二位,以此类推,直到最后一个数值

算法的时间复杂度为:O(n)

'''
选择排序:
1、找出最小的数值放在第一位
2、找出剩余数据中最小的数值放在第二位,以此类推,直到最后一个数值

算法的时间复杂度为:O(n)
'''
def find_min(list):
    min = list[0]
    minIndex = 0
    for i in range(len(list)):
        if(list[i] < min):
            min = list[i]
            minIndex = i
    return minIndex

def select_sort(list):
    newList = []
    for i in range(len(list)):
        minIndex = find_min(list)
        print(minIndex)
        newList.append(list.pop(minIndex))
    return newList

if __name__ == '__main__':
    list = [32, 13, 28, 5, 23, 56, 12, 78, 34]
    result = select_sort(list)
    print(result)


#第二种
def select_sort(list):
if len(list) < 2:
return list
else:
for i in range(len(list) - 1):
for j in range(i + 1, len(list)):
if list[i] > list[j]:
tmp = list[i]
list[i] = list[j]
list[j] = tmp
return list

if __name__ == "__main__":
list = [32, 13, 28, 5, 23, 56, 12, 78, 34, 1, 5]
result = select_sort(list)
print(result)

 Java版:

/**
 * 选择排序:
 1、找出最小的数值放在第一位
 2、找出剩余数据中最小的数值放在第二位,以此类推,直到最后一个数值
 * Created by fred on 2018/7/31.
 */
public class SelectSort {
    public static void main(String[] args) {
        int[] arr = {3, 9, 1, 5, 2, 8, 4};
        selectSort(arr);
        for(int i : arr){
            System.out.println(i);
        }
    }
    public static void selectSort(int[] arr){
        for(int i = 0; i < arr.length - 1; i++){
            for(int j = i + 1; j < arr.length; j++){
                if(arr[i] > arr[j]){
                    int tmp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = tmp;
                }
            }
        }
    }
}

 

posted on 2018-06-27 09:25  可豆豆  阅读(104)  评论(0编辑  收藏  举报

导航