选择排序的思想:
- 对比数组中前一个元素跟后一个元素的大小,如果后面的元素比前面的元素小则用一个变量temp来记住他的位置;
- 接着第二次比较,前面“后一个元素”现变成了“前一个元素”,继续跟他的“后一个元素”进行比较,如果后面的元素比他要小则用变量temp记住它在数组中的位置(下标),等到循环结束的时候,我们应该找到了最小的那个数的下标了;
- 然后进行判断,如果这个元素的下标不是第一个元素的下标,就让第一个元素跟他交换一下值,这样就找到整个数组中最小的数了。
- 然后找到数组中第二小的数,让他跟数组中第二个元素交换一下值,以此类推。
选择排序是不稳定的排序算法。
//选择排序
#include<iostream>
using namespace std;
void select_sort(int arr[],int arrlen)
{
int i,j;
int temp;
for(i = 0; i <arrlen-1; i++)
{
temp=i;//记录当前位置
for(j=i+1;j<arrlen;j++)
{
if(arr[temp]>arr[j])
{
temp=j;//记录比前面元素的小的位置
}
}
if(i!=temp)
{
arr[i]=arr[i]^arr[temp];
arr[temp]=arr[i]^arr[temp];
arr[i]=arr[i]^arr[temp];
}
}
}
int main()
{
int arr[]={9,3,5,2,4,1,8};
int i=0;
int arrlen=0;
arrlen=sizeof(arr)/sizeof(int);
select_sort(arr,arrlen);
for(i =0; i <arrlen; i++)
cout<<arr[i]<<' ';
cout<<endl;
return 0;
}