排序算法总结(三)

           交换排序的基本原则是通过两个数之间互相交换来实现的。选择排序中也要交换,可它的核心在选择。选择排序

本思想就是:每一次遍历都从待排序的数据元素中选出最小(或最大)的记录,按顺序放在已排序的记录序列后

面。选择排序的原理很简单,是一般常用的排序方法,但是由于其稳定性不高,所以实际应用中用到的并不多。接下

介绍一下选择排序中的简单选择排序。

        算法实现:

/********简单选择排序*********/
#include<stdio.h>
void SelectSort(int array[], int n);
void main()
{
	int array[10] = {49, 38, 65, 97, 13, 27, 76, 85, 56, 100};

	SelectSort(array, 10);  //函数调用

	for (int i  =0 ; i < 10; i++)
	{
		printf("%d ",array[i]);
	}

	printf("\n");
}

void SelectSort(int array[] ,int n)  //选择排序算法
{
	int i,j;
	int temp;  //设置中间变量
	for (i = 0; i < n-1; i++)
	{
		int k = i;  //设置变量k保存下标值

		for (j = i + 1; j < n; j++ )
		{
			if (array[k] > array[j])  //从后面的数里找到一个最小的和第一个数比较,并记录下该数的下标值
			{
				k=j;
			}
		}

		if (k!=i)  //将找到的数和第一个数进行交换
		{
			temp = array[k];
			array[k] = array[i];
			array[i] = temp;
		}
	}
}
运行结果:


     总结:

     简单选择排序的算法比较简单,应用的原理和交换排序有所不同,它是减少了交换,而增加了选择的次数,其实

本质还是不变的,下一次会介绍建立在完全二叉树上的堆排序,更会有不一样的排序思想和算法!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值