排序--选择排序

选择排序(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)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。

上一篇:koa


下一篇:js中常见的数组排序