博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构中的排序算法
阅读量:6811 次
发布时间:2019-06-26

本文共 758 字,大约阅读时间需要 2 分钟。

上一篇介绍了冒泡排序,现在介绍一下其他的排序算法

 

各种排序的稳定性,时间复杂度和空间复杂度总结:

 

3.选择排序

 直接选择排序算法的思想比较简单:(假设数据放在一个数组a中,且数组的长度是N)

  1:从a[0]-a[N-1]中选出最小的数据,然后与a[0]交换位置

  2:从a[1]-a[N-1]中选出最小的数据,然后与a[1]交换位置(第1步结束后a[0]就是N个数的最小值)

  3:从a[2]-a[N-1]中选出最小的数据,然后与a[2]交换位置(第2步结束后a[1]就是N-1个数的最小值)

  以此类推,N-1次排序后,待排数据就已经按照从小到大的顺序排列了。

那就来个具体的例子:比如数组为{3,1,5,7,2}

1.先从整个数组中找到最小的数,即1,放到最左边所以结果为1,3,5,7,2

2.从2个位置开始,找最小的,放在1的又边1,2,3,5,7

3.继续吧.....

直接选择排序的java实现如下:

public static void selectionSort(int[] elements){

        
for
(
int 
i = 
0
; i < elements.length-
1
; ++i){
            
int 
k = i;
            
for
(
int 
j = i; j < elements.length; ++j){
                
if
(elements[k] > elements[j]){
                    
k = j;
                
}
            
}
            
if
(k != i){
//交换元素
                
int 
temp = elements[i];
                
elements[i] = elements[k];
                
elements[k] = temp;
            
}
        
}
}

 

转载于:https://www.cnblogs.com/thomasbc/p/6646853.html

你可能感兴趣的文章
NUMA的关闭方法【转】
查看>>
Silverlight & Blend动画设计系列五:故事板(StoryBoards)和动画(Animations)
查看>>
支付(异步通知notify_url 与 同步通知return_url的区别)
查看>>
如何使用Nginx对抗DDoS攻击?
查看>>
PHP错误:SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
查看>>
车载摄像头 原像 镜像
查看>>
shell 在手分析服务器日志【转】
查看>>
简单理解Linux的Loopback接口
查看>>
nethogs 按进程实时统计网络带宽利用率的工具
查看>>
ubuntu svn 安装 http访问配置, https 访配置 ldap 验证配置
查看>>
java 网站用户在线和客服聊天
查看>>
订单系统开发(仿淘宝和美团网) 之 项目总结(一)
查看>>
django中的null=true,blank=true,这个讲得清楚点
查看>>
Mysql的存储过程(以Mysql为例进行讲解)
查看>>
深入浅出JSON[转]
查看>>
C#使用ICSharpCode.SharpZipLib压缩文件[转]
查看>>
用vc++如何得到汉字的Unicode编码?
查看>>
(原創) HDL只是代表一個model (IC Design) (Verilog)
查看>>
System.Net.Mail 例子 [收藏]
查看>>
WPF - 模板查看工具:Show Me The Template及如何查看第三方主题
查看>>