码迷,mamicode.com
首页 > 编程语言 > 详细

选择排序的c++实现(非STL)

时间:2017-10-19 21:20:45      阅读:418      评论:0      收藏:0      [点我收藏+]

标签:stream   log   c++   时间   有序   pac   时间复杂度   namespace   复杂   

#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
void SeleteSort(int *a,int n)
{
    int i,j;
    int temp=0;
    int flag=0;
    for(i=0;i<n-1;i++)
    {
        temp=a[i];
        flag=i;
        for(j=i+1;j<n;j++)
        {
                if(a[j]<temp)
                {
                    temp=a[j];
                    flag=j;//目前最小的元素下标
                }
            if(flag!=i)//如果最小的元素不是进行筛选的数据中的第一个,则将最小数据与第一个筛选数据交换
            {
                a[flag]=a[i];
                a[i]=temp;
            }
        }
    }
}
int main()
{
    void SeleteSort(int *a,int n);
    int i=0;
    int a[10]={
        2,3,4,5,67,89,34,23,54,98
    };
    SeleteSort(a,10);
    for(i=0;i<10;i++)
    {
        printf("%d  ",a[i]);
    }
    return 0;
}

 原理:

  每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。

  第i趟简单选择排序是指通过n-i次关键字的比较,

  从n-i+1个记录中选出关键字最小的记录。

  并和第i个记录进行交换。

  共需进行i-1趟比较,直到所有记录排序完成为止。

说人话:第一趟从序列中找出元素数值最小的与第一个交换,第二趟从序列中找出剩余中最小的与第二个交换,第n趟中从i个开始的n-i+1个元素中选出最小的与第i个元素交换,直到整个序列的元素变为有序。时间复杂度O(n^2).

  以后忘记了就来这里找,每天写一遍,直到背过。拿出背文言文的热枕来。

选择排序的c++实现(非STL)

标签:stream   log   c++   时间   有序   pac   时间复杂度   namespace   复杂   

原文地址:http://www.cnblogs.com/enyala/p/7694620.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!