排序系列--选择排序

来源:互联网 发布:知乎 可怕的事 编辑:程序博客网 时间:2024/05/18 02:09

// 排序系列--选择排序.cpp : 定义控制台应用程序的入口点。
//说明:选择是本人经常用到的排序方法,因为够简单(虽然性能不是很好)
//思想:一开始就在无序序列中选第一个(或最后一个元素)元素为最小(或最大)元素,然后用后续的元素与该选定的“最小”元素进行比较
//如果满足“最小”,则记录后移,否则交换位置(一趟选择排序)

//vs2010上编译通过

#include "stdafx.h"
#include <ctime>//用于调用随机种子函数
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
using namespace std;


void SelectSort(int a[],int n)
{
 for (int i=0;i<n;i++)//n趟
 {
  //下面是一趟选择排序
  int index=i;
  for (int j=i+1;j<n;j++)//将i后面的元素与i指定的元素进行比较
  {
   if (a[j]<a[index])//判断是否比假设的元素小,如果满足,则将该记录保存下来(替换原来的记录)
   {
    index=j;
   }
  }
  if (index!=i)//判断假设的最小元素是否真的是最小的,如果不是,则交换
  {
   a[i]=a[i]+a[index];
   a[i]=a[i]-a[index];
   a[index]=a[i]-a[index];
  }
 }
}

 

 


int _tmain(int argc, _TCHAR* argv[])
{

 int a[20];
 srand( (unsigned)time(NULL) );


 for (int i=0;i<20;i++)
 {
  a[i]=rand()%40;
 }
 SelectSort(a,20);


 for (int i=0;i<20;i++)
 {
  cout<<a[i]<<" ";
 }

 system("pause");


 return 0;
}

 

原创粉丝点击