简单选择排序(C语言实现)
来源:互联网 发布:安装 windows 卡着不动 编辑:程序博客网 时间:2024/04/29 20:43
简单选择排序也称直接选择排序,基本思想如下:
对于一组关键字{K1,K2,…,Kn}, 首先从K1,K2,…,Kn中选择最小值,假如它是 Kz,则将Kz与 K1对换;然后从K2,K3,… ,Kn中选择最小值 Kz,再将Kz与K2对换。如此进行选择和调换n-2趟,第(n-1)趟,从Kn-1、Kn中选择最小值 Kz将Kz与Kn-1对换,
最后剩下的就是该序列中的最大值,一个由小到大的有序序列就这样形成。
算法时间复杂度为n(n-1)/2=0(n2)。
实现代码:
#include <stdio.h>#include <stdlib.h>#include<math.h>#define MAX 1000#define N 8typedef struct{ int r[MAX]; int length;}SqList;void print(SqList L){ int i; for(i=1;i<L.length;i++) printf("%d,",L.r[i]); printf("%d",L.r[i]); printf("\n");}void swap(SqList *L,int i,int j){ int temp=L->r[i]; L->r[i]=L->r[j]; L->r[j]=temp;}void SelectSort(SqList *L){ int i,j,min; for(i=1;i<L->length;i++) { min=i; for(j=i+1;j<=L->length;j++) { if(L->r[min]>L->r[j]) { min=j; } } if(i!=min) { swap(L,i,min); } }}int main(){ int i; int d[N]={1,9,2,5,8,11,6,3}; SqList L0; for(i=0;i<N;i++) { L0.r[i+1]=d[i]; } L0.length=N; printf("排序前:\t\t\t"); print(L0); printf("简单选择排序:\t\t"); SelectSort(&L0); print(L0); return 0;}
结果:
- 简单选择排序(C语言实现)
- 排序之三:简单选择排序(C语言实现)
- 【算法】简单选择排序C语言实现
- 数据结构 简单选择排序(C语言实现)
- C语言实现冒泡排序和简单选择排序
- 简单选择排序(C语言版本)
- (排序)用C语言实现的简单选择排序(选择排序,其实个人认为也是交换排序)
- c语言简单选择排序
- 选择排序(C语言实现)
- 选择排序(C语言实现)
- 简单的C语言选择排序实现代码
- c语言简单实现 冒泡,插入,选择,归并排序
- C语言简单选择排序算法的实现
- 简单选择排序(C & Java 实现)
- 简单选择排序(C/C++实现)
- 选择排序C语言实现
- 选择排序C语言实现
- 选择排序C语言实现
- C#解析json方法整理
- error: stray ‘\357’ in program
- 开机的时候显示Reboot and select proper boot device or Insert Boot Media in selected Boot
- mongodb集群
- my applicationContext.xml
- 简单选择排序(C语言实现)
- 在同一个表中关于 INSERT...SELECT MAX(x)+1 中引起的错(mysql)
- 接口和抽象类什么时候用
- Qt--文件名匹配 ftp下载界面
- Java_SVN客户端开发
- MFC之常用窗口风格
- DP系列之二进制状态压缩--杭电1074
- Python笔记(4):面向对象,迭代器,生产器
- Spring入门