排序问题二(简单选择排序)
来源:互联网 发布:java数据库代码生成器 编辑:程序博客网 时间:2024/05/19 15:21
简单选择排序
【引言】
简单选择排序的基本思想在于,在待比较的数中找出最小的数,然后比较其他数,直到排序完成。例:第一趟,比较N个数,将第一个数与其他数比较,与比它小的数交换。第二趟,比较N-1个数,将第一个数(在N-1中的第一个数)与其他数比较,与比他小的数交换。第三趟………
依次进行下去我们就依次找出来最小的数,第二小的数……
- 代码如下:
#include<stdio.h>#define NUM 10void main(){ int i,j,min,temp; int vote[NUM]; printf("请输入要比较的%d个数.\n",NUM); for(i=0;i<NUM;i++){//输入 printf("请输入第%d个数:",i+1); scanf("%d",&vote[i]); } printf("排序前:"); for(i=0;i<NUM;i++){//比较前输出 printf("%d\t",vote[i]); } printf("\n"); for(i=0;i<NUM-1;i++){//外层循环:NUM个数比较NUM-1趟 min=i;//每趟开始前将vote【i】赋值给vote【min】。保证最开始时vote【min】始终为第一个数。 for(j=i+1;j<NUM;j++){//里层循环:每个数比较(NUM-i-1)趟。 j=i+1表示:在后面的判断时与vote【min】比较的数为第i个数后面的一个数。 if(vote[j]<vote[min]){ min=j;//如果vote【min】比它后一个数大,则把j赋值给min。即min中始终要存放最小的数的脚标。 } } if(i != min){//结束一趟比较后,如果i不是最小的数,则此时把vote【min】中的值赋给vote【i】 temp = vote[i]; vote[i] = vote[min]; vote[min] = temp; } } printf("排序后:");//输出 for(i=0;i<NUM;i++){ printf("%d\t",vote[i]); }}
运行结果
简单选择排序其实与冒泡排序类似,不过平均时间与复杂度比冒泡排序稍低。
1 0
- 排序问题二(简单选择排序)
- 排序算法(二)简单选择排序
- 【基础算法】排序-简单排序之二(选择排序)
- 排序算法之二:选择排序之【简单选择排序】
- 神的规范:排序算法(二):简单选择排序
- Java排序算法(二):简单选择排序
- 排序算法二:简单选择排序
- 排序(二):选择排序
- 简单排序二--冒泡排序、选择排序、插入排序练习
- 简单排序(选择排序)
- 排序(二)简单选择排序、直接插入排序、希尔排序
- 选择排序(二)
- 【排序二】选择排序(选择排序&&堆排序)
- 【排序二】选择排序(选择排序&&堆排序)
- 选择排序(二)--树形选择排序
- 简单排序算法:简单选择排序(选择排序)
- 排序算法(二)选择类排序:简单选择排序,堆排序,锦标赛排序
- 排序二 选择排序
- Remove Duplicates from Sorted Array II
- 系统恢复技术
- Struts(7)Struts的DispatchAction(分派Action)和全局跳转
- 《逆向工程核心原理》<03-27> 代码注入
- NYOJ-399整除个数
- 排序问题二(简单选择排序)
- Codeforces 798C Mike and gcd problem【思维+贪心】好题!
- 底部一直在最底部不管内容多少
- hive错误记录
- CEDIT使用
- OneR 分类
- VLAN原理详解
- java代码块{}笔记
- HDU 3480 斜率优化DP