选择排序(Selection sort)是一种简单直观的排序算法。
工作原理:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法
初始状态:无序区为R[0…n-1](共n个元素),有序区为空
//C
#include<stdio.h>
void swap(int *a,int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
void selection_sort(int arr[], int len)
{
int i,j;
for (i = 0 ; i < len - 1 ; i++)
{
int min = i;
for (j = i + 1; j < len; j++) //走访未排序的元素
if (arr[j] < arr[min]) //找到目前最小值
min = j; //记录最小值
swap(&arr[min], &arr[i]); //做交換
}
}
int main (){
int a[10]={3,6,2,8,5,4,5,8,1,9};
selection_sort(a,10);
for(int i=0;i<10;i++) {
printf("%d",a[i]);
}
return 0;
}
//C++
# include<iostream>
# include<vector>
using namespace std;
void SelectSort(vector<int> vec)
{
for(int i=0;i<vec.size()-1;++i)
{
int min = i;
for(int j=i+1;j<vec.size();++j)
{
if(vec[min]>vec[j])
min = j;
}
if(min!=i)
{
int temp = vec[i];
vec[i]=vec[min];
vec[min]=temp;
}
}
for(int i=0;i<vec.size();++i)
cout<<vec[i]<<" ";
}
int main()
{
vector< int> vec;
int temp=0;
while(cin>>temp)
{
vec.push_back(temp);
}
SelectSort(vec);
return 0;
}
//输入时以字母结束即可
**向量(Vector)**是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。