"选择排序"C++/python实现

对一组数据进行选择排序的方法是,在一组数据中找到最小的,排到第一位,然后从剩下的数据中找到第二个小的,排到第二位,逐次排序完成。

比如:3 ,7 ,9 ,10, 0这一组数据:

第一次排序:3,7,9,0,10,将最小的0排到第一位,3和0的位置交换,为0,7,9,3,10,然后未排序的数据为7,9,3,10,对未排序的数据继续进行选择排序

第二次排序:7,9,3,10,将最小的3排到第二位,7和3的位置交换,为0,3,9,7,10,然后未排序的数据为9,7,10,对未排序的数据继续进行选择排序

第三次排序:9,7,10,将最小的7排到第三位,7和9的位置交换,为0,3,7,9,10,然后未排序的数据为9,10,对未排序的数据继续进行选择排序

第四次排序:9,10,将最小的9排到第四位,然后未排序的数据为10,对未排序的数据继续进行选择排序。

第五次排序,10为最小的,排在第5位,排序完成。

数据对于C/C++来说存储在数组中,python存储在列表中,排序过程完全一样。

比较冒泡排序和选择排序,两者均经过两个循环,复杂度是一样的,均为O(n^2)。

C++代码:

# include <iostream>

using namespace std;

#define TEST_ARRAY_LEN  7

void select_sort(int test[], int len)
{
	int i,j, min, min_k;

	if(len > TEST_ARRAY_LEN)
	{
		return;
	}

	for(i = 0; i < len; i++)
	{
		min = test[i];
		min_k = i;
		for(j = i; j < len; j++)
		{
			if(test[j] < min)
			{
				min = test[j];
				min_k = j;
			}
		}
		
		test[min_k] = test[i];
		test[i] = min;
	}

	return;
}

void main()
{
	int test[TEST_ARRAY_LEN] = {2,5,1,6,7,3,4};
	select_sort(test, TEST_ARRAY_LEN);
	for (int i =0; i < TEST_ARRAY_LEN; i++)
	{
		cout << test[i] << " ";
	}
	cout << endl;
}

python实现:

#!/usr/bin/python  
# -*- coding: utf-8 -*-  

def select_sort(list, n):
	if (n > len(list)):
		return
	for i in range(0, n):
		min = list[i]
		min_k = i
		for j in range(i, n):
			if list[j] < min:
				min = list[j]
				min_k = j
		list[i], list[min_k] = list[min_k], list[i]
	return list
	
a = [1,4,5,7,3,2,6,3,9]
print select_sort(a,len(a))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值