@选择排序python代码实现(每次遍历选出一个最大或者最小项)
选择排序最主要的就是要实现:第一次从所给的数据队列中选择出最小的或者最大的那一个数字,然后存放在数组的第一个或者最后一个位置。第二次又从除过第一个或者最后一个位置的序列中再次选择最小的那一个放在第二个或者倒数第二个位置。这样依次类推实现排序功能。
由于一直为找工作的笔试做准备,所以其中的输入是按照行的输入自动读取的,输入完一行数据通过Ctrl+D来结束输入,程序结束就会显示结果。注意:输入的数据以空格隔开为一行数据。
方法一:python标准方法(不需要额外的列表空间)
import sys
def select_sort(lists):
count = len(lists)
for i in range(count): //选出数组中最小的数与数组中的第一个数进行交换
min = i
for j in range(i+1, count):
if lists[min] > lists[j]:
min = j
//# 同时将lists[min]和lists[i]的数值进行交换,不需要一个中间值,是同时进行的
lists[min], lists[i] = lists[i], lists[min]
return lists
if __name__ == '__main__':
lines = sys.stdin.readlines()
lists = lines[0].strip().split()
print("排序前序列为:", )
for i in lists:
print(i,end=" ")
print("\n排序后结果为:")
for i in (select_sort(lists)):
print(i,end=" ")
方法二:C++标准方法(不需要额外的列表空间)
import sys
#include <iostream>
using namespace std;
void SelectSort(int list[], int n);
int main()
{
//定义一个数组然后打印出所有的成员数据
int a[] = {6,5,8,4,9,1,7,3,2,0};
for (int k =0; k < 10; k++)
{
cout << a[k] << " ";
}
cout << endl;
//进行选择排序后再次打印出排好序的数组
SelectSort(a,10);
for (int k =0; k < 10; k++)
{
cout << a[k] << " ";
}
cout << endl;
system("pause");
return 0;
}
void SelectSort(int list[], int n)
{
//先选出最小的与数组的第一个数进行交换,然后依次选出除过第一个数之后的所有的数中最小的。
//for (int i =0;i < n-1; i++)
//{
// int min = i;
// for (int j = i+1; j< n; j++)
// {
// if (list[j] < list[min])
// {
// min = j;
// }
// }
// swap(list[i],list[min]); //swap函数是std的自定义函数,也可以自己定义
//}
//先选出所有的数中最大的数与数组的最后一个数进行交换,然后依次选出次大的。
for (int i =n-1;i >=0; i--)
{
int max = i;
for (int j = i-1; j>=0; j--)
{
if (list[j] > list[max])
{
max = j;
}
}
swap(list[i],list[max]);
}
}