数据结构排序问题_2
来源:互联网 发布:mac杀毒软件知乎 编辑:程序博客网 时间:2024/06/05 01:55
这里想总结的是简单选择排序法
假设输入的是有n个整形元素的数组;
基本思想: 先定好位置,再找元素
1. 从第一个元素开始,第一次遍历找到最小元素的位置,如果最小的元素就是第一个元素,则不操作,若最小的元素不是第一个元素,则与第一个元素进行交换。这样一来,第一个元素就是所有元素的最小值了。
2. 接下来从第二个元素开始进行新一轮的遍历,若此轮最小的元素是第二个元素则不操作,若不是,则与第二个元素进行交换。
…..同理依次进行。
3.最后所有元素就按照从小到大的顺序排列好了,输出即可。
代码实现:
/* 选择排序法 */#include<stdio.h>void Selection_sort(int a[], int n);int main(){ int a[10]={13,56,87,45,67,4,26,90,74,38}; //初始化数组 Selection_sort(a,10); //实现选择排序,并输出有序数组 return 0;}void Selection_sort(int a[],int n){ int i,j,index,temp,min; //temp作为交换时的中间变量,index记录每次遍历的最小元素的位置 for(i=0;i<n-1;i++) //总共遍历n-1次 { index=i,min=a[i]; //遍历前将第i个元素视为最小元素 for(j=i+1;j<n;j++) //两两元素开始比较大小找到最小元素的位置 { if(a[j]<min) //所有元素都要和min做比较 { min=a[j]; //一定要记得更新最小的值 index=j; //根据大小情况改变index的值 } } if(index!=i) //第i次遍历若最小元素为a[i],则不操作,若不是,则进行交换 { temp=a[i]; a[i]=a[index]; a[index]=temp; } /*************经过一次遍历观察结果*****************************/ printf("第%d趟: ",i+1); for(j=0;j<n;j++) { printf("%5d",a[j]); if(j==n-1) printf("\n"); }/****************************************************************/ }}
运行结果如图:
个人总结:在第一次写完程序后运行发现自己没有定义一个变量min来不断更新最小的值,只是后一个元素和前一个元素进行比较。
end
1 0
- 数据结构排序问题_2
- 算法设计和数据结构学习_2(常见排序算法思想)
- 排序_2.快速排序
- 数据结构_2.单链表
- 数据结构算法3_2
- 数据结构_2:链表:C++
- 数据结构_2:链表:STL
- 交换排序_2.快速排序
- 排序算法_2,快速排序
- 数据结构_2:链表:C语言
- 【CCF】201503_2数字排序
- 【数据结构-排序问题】各种排序哦
- 数据结构-排序问题之冒泡排序
- 插入排序_2.折半插入排序
- 数据结构_2:链表:C语言练习
- 数据结构算法3_2 迷宫求解
- 22_2 素数求和问题
- 3_2 竖式问题
- Caffe Blob Dtype理解
- list.add(rs.getInt())报错的问题
- 【网络流24题】1.飞行员配对方案问题
- Android中双击图片放大 PhotoView
- Codeforces 160E
- 数据结构排序问题_2
- 4.Spring学习笔记之面向切面的Spring
- Powershell发送电子邮件
- 欢迎使用CSDN-markdown编辑器
- 图解Linux命令之--paste命令
- offset系列浅析
- 第五章 MAD依赖
- Tomcat之the jre_home environment variable is not defined correctly this environment variable is need
- i注释