选择排序算法

来源:互联网 发布:莱特币开发源码 编辑:程序博客网 时间:2024/05/22 13:39

选择排序算法也是比较简单的一种交换排序算法,原理是:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。选择排序算法百度百科

#include <stdio.h>/*  选择排序算法  *  待排序序列:(3,5,6,2,4,9) *  *第一趟:2,(5,6,3,4,9) *第二趟:2,3, (6, 5, 4, 9)  *  第三趟:2, 3, 4, (5, 6, 9)  *第四趟:2,3,4,5, (6, 9)  *  第五趟:2,3,4,5,6, (9) *  第六趟:(2,3,4,5,6,9) */ void fun(int a[],int n){int i,j,k,t,x;for(i=0;i<n-1;i++){k=i;                //锁定序列的第一个未排序元素 for(j=i+1;j<n;j++){if(a[j]<a[k]){k=j;        // 找到剩下的序列中最大或最小的元素,交换下标 }}if(i!=k)            // 若不等于未排序第一个元素,交换元素 {t=a[i];a[i]=a[k];a[k]=t;}}}int main(){int i,a[6]={3,5,6,2,4,9};fun(a,6);for(i=0;i<6;i++)printf("%d ",a[i]);}
选择排序算法是不稳定的,如{3,3,1},第一次就交换第一个3与1的位置,打乱了原来的相同元素的位置,平均时间复杂度是O(n^2),最坏也是O(n^2),最好也是O(n^2)。

0 0
原创粉丝点击