选择排序算法

来源:互联网 发布:人工智能建模 编辑:程序博客网 时间:2024/05/29 14:24

直接选择排序将数据分为有序区和无序区,从无序区选一个最小的元素直接放到有序区的最后。

设数组为a[0…n-1]。

1.        初始时,数组全为无序区为a[0..n-1]。令i=0

2.        在无序区a[i…n-1]中选取一个最小的元素,将其与a[i]交换。交换之后a[0…i]就形成了一个有序区。

3.        i++并重复第二步直到i==n-1。排序完成。

示例程序:

#include<iostream>

#include<algorithm>

using namespace std;

 

void select_sort(int *a,int n);

 

int main()

{

   int a[10]={9,8,7,6,5,4,3,2,1,0};

   select_sort(a,10);

   for(int i=0;i<10;i++)

    {

       cout<<a[i]<<" ";

    }

   return 0;

}

 

void select_sort(int *a, int n)

{

   int i, j, nMinIndex;

   for (i = 0; i < n; i++)

    {

       nMinIndex = i; //找最小元素的位置

       for (j = i + 1; j < n; j++)

       {

           if (a[j] < a[nMinIndex])

           {

                nMinIndex = j;

           }

       }

       swap(a[i], a[nMinIndex]); //将这个元素放到无序区的开头

    }

}

输出:

0 1 2 3 4 5 6 7 8 9

0 0
原创粉丝点击