排序算法-------简单选择排序
2011-10-02 09:41
260 查看
选择排序原理:循环查找n个元素中最小的元素,与第一个元素进行交换;继续查找n-1个元素中最小的元素,与第二个元素交换.....直至完成
简单选择排序
相比于冒泡排序算法,由于选择排序每次寻找最小元素使用的是数组下标作为标记,直到最后才进行交换移动的,所以减少了交换的次数。
需要的比较次数是固定的:n-1+n-2+n-3+…+1=n(n-1)/2次。
需要的交换次数:最好情况下为0次,最差情况下需要交换n-1次,总得时间复杂度为O(n^2)
简单选择排序
#include <iostream> using namespace std; //元素交换 void swap(int &a,int &b) { int temp=a; a=b; b=temp; } /*/////////////////////////////////////////////// 简单选择排序 */ void SelectSort(int *a,int len) { int i,j,pos,temp; for(i=0;i<len-1;i++) { pos=i; temp=a[i]; for(j=i+1;j<len;j++) { if(a[j]<temp) //若a[i]小于后面的元素,则保存较小元素的下标, //并且将该元素的值保存在temp中,继续比较 { pos=j; temp=a[j]; } } swap(a[i],a[pos]); } for(i=0;i<len;i++) cout<<a[i]<<" "; cout<<endl; } ///////////////////////////////////////////////// int main() { int n,i,a[20]; cout<<"请输入数组元素n:"<<endl; cin>>n; cout<<"请输入"<<n<<"个元素:"<<endl; for(i=0;i<n;i++) cin>>a[i]; SelectSort(a,n); return 0; }
相比于冒泡排序算法,由于选择排序每次寻找最小元素使用的是数组下标作为标记,直到最后才进行交换移动的,所以减少了交换的次数。
需要的比较次数是固定的:n-1+n-2+n-3+…+1=n(n-1)/2次。
需要的交换次数:最好情况下为0次,最差情况下需要交换n-1次,总得时间复杂度为O(n^2)
相关文章推荐
- 四种简单的排序算法(插入、冒泡、选择排序、快速排序法)+汉诺塔算法
- python实现2种简单的排序算法--冒泡排序和选择排序
- 排序--简单选择排序算法
- 常用的排序算法:冒泡,简单选择,直接插入,快速排序,堆排序
- 简单的排序算法--冒泡排序、选择排序
- 排序算法2--简单选择排序、堆排序
- 神的规范:排序算法(二):简单选择排序
- 简单的排序算法——插入排序,选择排序,交换排序(冒泡排序,快速排序)
- 三个简单、基本的排序算法---插入排序、选择排序、冒泡排序
- 排序算法--简单选择排序
- 排序算法2--简单选择排序、堆排序
- 排序算法2--简单选择排序、堆排序
- 简单的排序算法——插入排序,选择排序,交换排序(冒泡排序,快速排序)
- 排序算法---简单选择排序
- 排序算法(C实现)--------- 简单选择排序
- 排序算法2--简单选择排序、堆排序
- 排序算法2--简单选择排序、堆排序
- 数据结构与算法之排序算法---简单选择排序
- 排序算法---简单的选择排序
- 排序算法2--简单选择排序、堆排序