【算法2】之选择排序

    选择排序,基本思想是对一个数组进行遍历,找到最大或最小的一个放到第一个位置上,第二次遍历同样找到最大或最小的放到第二个位置上。

    选择排序与冒泡排序相似,不同的是冒泡排序凡是符合条件的都会交换位置即符合条件就交换,而选择排序中,如果符合条件,则标志它的位置,等到全部判断一遍后,把标志位置的元素与某一元素交换位置,简单的说就是多次比较,一次交换。

实现代码如下:

#include "stdafx.h"
#define _Count (sizeof(p)/sizeof(p[0]))
int _tmain(int argc, _TCHAR* argv[])
{
 int p[] = {2,3,4, 1,77,55,99 };
 for (int i = 0; i <( _Count); i++)
 {
  int index = i;
  for (int j = i ; j < (_Count); j++)
  {
   if (p[index] < p[j+1])
    index = j+1;
  }
  int tmp = p[index];
  p[index] = p[i];
  p[i] = tmp;
 }
 for (int k = 0; k < (_Count); k++)
 {
  printf("%d ", p[k]);
 }
 return 0;
}

选择排序为不稳定排序,当遇见5,5,3这样的数组时,该算法会交换两个5的前后顺序。

转载于:https://my.oschina.net/zhangjialiang/blog/225841

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值