选择排序 Selection Sort

选择排序是一种很直观的排序算法,让我们来用同学们排队来演示一番吧。

Python代码

学习Python编程的同学们有机会一定要自己练习一下哦,这样编程的能力才可以提高。

# 一个身高列表,未排序
alist = [155, 156, 170, 151, 142]
print(alist)

for i in range(len(alist)-1):
    # i会从0到列表长度减2,为什么?因为最后一轮就1个同学不用再排了
    # 找最矮的同学,记住最矮同学的位置s和身高sg
    s = i
    sg = alist[i]
    for j in range(i+1, len(alist)):
        if alist[j] < sg:
            sg = alist[j]
            s = j
    # 让最矮的和未排序序列中的第一个(就是i这个位置)进行交换
    # 如果最矮的就是未排序列表中的第一个,则不用交换
    if s != i:
        temp = alist[i]
        alist[i] = alist[s]
        alist[s] = temp

# 排好序的身高列表
print(alist)

C++代码

学习C++编程的同学们有机会一定要自己练习一下哦,这样编程的能力才可以提高。

#include <iostream>
using namespace std;

int main() {
    // # 一个身高列表,未排序
    int alist[5] = {155, 156, 170, 151, 142};   
    for (int i=0; i<5; i++) {
        cout << alist[i] << ' ';
    }
    
    for (int i=0; i<4; i++) {
        //i会从0到列表长度减2,为什么?因为最后一轮就1个同学不用再排了
    	// 找最矮的同学,记住最矮同学的位置s和身高sg
        int s = i;
        int sg = alist[i];
        for (int j=i+1; j<5; j++) {
            if (alist[j] < sg) {
                sg = alist[j];
                s = j;
            }
        }
        // 让最矮的和未排序序列中的第一个(就是i这个位置)进行交换
    	// 如果最矮的就是未排序列表中的第一个,则不用交换
        if (s != i) {
            int temp = alist[i];
            alist[i] = alist[s];
            alist[s] = temp;
        }
    }
	
    // 排好序的身高列表
    for (int i=0; i<5; i++) {
        cout << alist[i] << ' ';
    }

    return 0;
}

看漫画也能学编程和算法?没错!编程玩家俱乐部正在连载系列课程《看漫画学算法》带你用轻松看漫画的方式来学习算法,本课程面向零基础学员,只要坚持学习并多思考和多练习,相信你一定会成为编程算法高手!如果喜欢本课程,就收藏一下哦,转发给你的小伙伴们,大家一起来学习!