python选择排序算法代码,用python实现选择排序
简单的选择排名((先选最小值后推第一名的循环)第一名和后面一个一个比较,每次都是最小的顶,第一名后推),也就是说刚选的第一名就是最小值,所以不再比较。
复杂性:移动记录所需的操作次数小于0-3 (n-1)。无论记录的初始排列是什么,关键字之间需要的比较次数都是一样的,都是n(n-1 )/2,总的时间复杂度是o)N2);
空间复杂度o(1))。
算法的改进:在每次比较中,为了把最小值作为第一位,和最后一位比较,找出最小值,直接作为第一位,可以省去无意义的移动操作。你也可以改变方向。与上一位相比,最后一位每次都将最大值下沉到底部,最后一位前移。
JAVA源代码:
复制的代码是:
publistaticvoidselectsort(date[]days){
int min
日期温度;
for(intI=0;i days.lengthI ) {
min=I;
for(intj=min 1;j days.lengthj ) {
如果(天[分钟]。比较(天数[j] )0) {
min=j;
}
}
如果(最低!=i ) {
temp=days[I];
天数[I]=天数[分钟];
天数[分钟]=温度;
}
}
}
上课日期{
int年、月、日;
日期(整数,整数,整数){
年份=y;
月=m;
日=d;
}
输入上市公司(日期){
返回年份日期。年份?1:年份日期。年份?-1
:月份日期。月份?1:月份日期。月份?-1
:日日期.日?1 : day date.day?-1 : 0;
}
公开作废打印(
system.out.println(年 月 日);
}
}
简单选择排序:
简单选择排序类似于“冒泡排序”,从其余元素中选择最大值,一次填充当前位置。唯一的区别是,冒泡排序在每次发现小于(或大于)当前值时交换元素的位置,而简单选择排序通过选择最大值和剩余元素的当前位置来交换数据。
例如,对于元素集r={37,40,38,42,461,5,7,9,12}
第一次排序,37直接和5交换形成新的排列R1={ 5,40,38,42,461,37,7,9,12}
第二次排序,40直接和7交换,形成新的序列R2={ 5,7,38,42,461,37,40,9,12}
这样,一直持续到最后一个元素。注意:在第二种排序中,38小于42,但是不交换数据。
下面是可以很容易排序的Java实现版本。
复制的代码是:
publistaticvoidselectionsort(int[]data){
if(data==nulldata.length=1)()))))))))).
返回;
int i,j,value,minPos,len=data.length
int outer=len - 1,tmp
for(I=0;I外部;I ) {
value=data[I];
min pos=-1;
for(j=I1;j lenj ) {
if(数据[j]值){
min pos=j;
value=data[j];
}
}
如果(最小的销售点!=-1({
tmp=data[I];
数据[I]=值;
data[min pos]=tmp;
}
//for(intk=0;k lenk ) {
//
System.out.print(data[k],);
//}
//system . out . println();
}
}
公共静态void main(String[] args) {
int[] coll={
37, 40, 38, 42, 461, 5, 7, 9, 12
};
selection sort(coll);
for(int I=0;i coll.lengthi ) {
System.out.print(coll[i],);
}
}
树选择排序(树选择排序)
与简单的选择性排序相比,树排序算法是一种典型的以空间换时间的算法。其思路是为要排序的N个元素构造一个相对较小的数(N-1)/2,然后构造一个相对较小的数[N-1]/4,直到只剩下一个元素。构建一个完整的二叉树。
排序时,该元素是最小的。取出最小的元素,用‘最大值’代替,然后调整完整的二叉树。
下面是树选择排序的Java实现版本:
复制代码如下:
public static void treeSelectionSort(int[]data){
if (data==null data.length=1)
返回;
int len=data.length,low=0,I,j;
//添加辅助空格
int[]tmp=new int[2 * len-1];
int tSize=tmp.length
//构造一棵树
for(i=len-1,j=tmp . length-1;I=0;i -,j - ){
tmp[j]=data[I];
}
for(I=tSize-1;I 0;i-=2){
tmp[(i-1)/2]=tmp[i] tmp[i-1]?tmp[I-1]:tmp[I];
}
//结束
//删除最小节点。
while(低镜头){
data[low]=tmp[0];
for(j=tSize-1;tmp[j]!=tmp[0];j-);
tmp[j]=整数。MAX _ VALUE
while(j 0){
If(j%2==0){ //如果是正确的节点
tmp[(j-1)/2]=tmp[j] tmp[j-1]?tmp[j-1]:tmp[j];
j=(j-1)/2;
}else{ //如果是左节点
tmp[j/2]=tmp[j] tmp[j 1]?tmp[j 1]:tmp[j];
j=j/2;
}
}
}
}
在构造完全二叉树时,N个元素的集合需要2*N -1个辅助空间。
代码:
复制代码如下:
while(j 0){
If(j%2==0){ //如果是正确的节点
tmp[(j-1)/2]=tmp[j] tmp[j-1]?tmp[j-1]:tmp[j];
j=(j-1)/2;
}else{ //如果是左节点
tmp[j/2]=tmp[j] tmp[j 1]?tmp[j 1]:tmp[j];
j=j/2;
}
}
然后执行递归来构造新集合中的最小值。
冒泡排序算法和简单选择排序算法的Js实现
之前介绍过冒泡排序算法和简单选择排序算法及原理,现在用Js实现。冒泡排序算法让dat=[5,8,10,3,2,18,17,9];函数气泡排序(d.
Python选择性排序算法的原理及使用实例分析
Python选择性排序算法的原理及使用实例分析。本文主要介绍了Python的选择性排序算法,简述了选择性排序的原理,并结合实例分析了Python实现和应用选择性排序的具体操作技巧和所需朋友。
C语言选择排序算法原理及实现:从数组中找出最小元素,交换位置。
#include int main(void) {/*选择排序算法的原理:从数组中找出最小的元素然后交换位置:*/int a[10]={9,5,10,7,
选择简单排序算法的Cplusplus实现
简单选择排序采用最简单的选择方法,即选择剩余序列中最小(或最大)的关键字,交换剩余序列中的第一个关键字,依次选择序列,直到整个序列排序。算法中两层循环的执行次数与初始序列无关,第二层循环.
选择一个简单的排序算法(Cplusplus版)
#include使用命名空间std/**简单选择排序*简短:*键:**位置:
数列的简单选择排序及其改进算法—— Java实现
简单排序算法:基本思路:在要排序的数据中,选择最小的数,与第一个位置的数交换;然后在剩余的数中选择最小的数,与第二个数交换;以此类推,直到只剩下两个数字可供比较。例如:0。初态.
内部排序-gt semi;选择排序-gt semi;简单选择排序
描述字符简单排序的基本思路是:从每次行程中的n-I ^ 1(I=1,2,…,n)条记录中,选择关键字最小的记录作为有序列表中的第I条记录。原理图算法分析在简单排序算法中,移动记录所需的操作次数较少,
常用排序算法摘要冒号;插入排序,希尔排序,冒泡排序,快速排序,简单选择排序和java实现。
今天我们来总结一下常用的内部排序算法。内部排序算法需要掌握的知识点有:算法的原理,算法的编码实现,算法的时空复杂度的计算和记忆,最差时间复杂度何时出现,是否稳定,何时不稳定。首先,我们总结一下常用的内部排序算法。
Java排序算法lpar第二个rpar:简单选择排序
【基本思路】在一组要排序的数字中,选择最小的数字与第一个位置的数字交换:然后在剩余的数字中找出最小的数字与第二个位置的数字交换,如此循环,直到倒数第二个数字与最后一个数字比较。算法的关键:找到最小的数并使用.
随机推荐
XSS原则
跨站脚本攻击是网站应用的安全漏洞,也是一种代码注入攻击。XSS:反思型XSS:非持续性XSS(自我触发,输入输出)。
TAPsolTUN摘要
调谐器适用于ip帧。TAP适用于以太网帧。Tap模拟以太网设备(通过arp广播MAC标识),它运行第二层数据包,如以太网数据帧。TUN模拟网络层ip设备(点对点,使用IP标识),运行第三层。
从排序后的数组lbrack中删除重复项;LeetCodersqb
给定一个已排序的数组,就地移除重复元素,使每个元素只出现一次并返回.
Studio版本管理工具Git(图形教程)
目前业界主流的版本管理工具主要是svn/git,svn是集中式的代码管理工具,而git是分布式的代码管理工具,广受极客们的喜爱。基于Git的gitHub是全宇宙所有编码人员提高和研究技术的必需品。
Ios项目记录
1.如何隐藏状态栏?在基类-(bool)preferrsstatusbarhidden {//IOs 7,[[UIApplications.
ASPperiodNET MVC路由配置
I .命名参数规范匿名对象routes.maproute (name: default ,URL: { controller }/{ action }/{ id } .
使用Dnspod api批量更新添加DNS解析[python脚本]-酷
使用Dnspod api批量更新添加DNS解析【python脚本】-酷未定义
操作和维护开发lpar二十二个rpar详细说明:JSONP,瀑布,组合搜索,多级评论,tornado框架介绍
内容:JSONP应用瀑布式布局组合搜索多级评论tornado框架JSONP应用介绍由于浏览器的同源策略机制,同源策略会阻止从一个源加载的文档或脚本获取或设置从另一个源加载的文档的属性。
Selenium自动化测试(java语言)
Selenium Selenium 1.0简介Selenium 1.0由core.ide.rc.grid四部分组成,selenium 2.0在两个gydy相遇并相互交流时,决定做面向对象结构(OOPP)和便利性。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。