java:选择排序法对数组排序
最近想练一练Java的算法,然后碰到LeetCode上一道从排序数组删除重复项的小题,刚开始没看到是从排序数组中,就乱写,其实要是排序树组,就比乱序的感觉上好写多了。然后就想回顾下冒泡法对数组排序,凭感觉写的,写到最后成了选择排序……呃……
简单对冒泡法和选择排序法介绍一下。
冒泡法是两两比较,两两交换,逐渐的把最大的弄到最后(最前),最小的弄到最前(最后)。网上有很多例子。
而选择排序法是每次都选出最小的放到最前(最后),然后再从剩下的数里面选出里面最小的再放到第二位(倒数第二位)。
public class Solution {
public static void main(String[] args) {
int[] nums = {10, 12, 6, 4, 8, 3, 7, 23, 65, 12};
for (int i = 0; i < nums.length; i++) { //第一个for循环
int n = nums[i], a = i, change; //定义第二个for循环需要用的东西
for (int j = i; j < nums.length - 1; j++) { //每次都让j=i,想要做的是在第i个以及以后选择最小的放到第i位
if (nums[j + 1] < n) { //如果下一个比n小,就让n等于下一个,for循环结束时n就是最小的
n = nums[j + 1];
}
for (int x = 0; x < nums.length; x++) { //这个for循环的作用是找到最小的那一位数并用a记录
if (n == nums[x]) {
a = x;
}
} //内for结束
} //外for结束
change = nums[i]; //把最小的和第一位交换
nums[i] = nums[a];
nums[a] = change;
}
for (int x : nums) { //foreach输出数组
System.out.print(" " + x);
}
}
}
可能我潜意识里就觉得选择排序法思路更清晰一些吧……好像执行速度还挺短的,以后也会多进行这样的小练习。
java:选择排序法对数组排序的更多相关文章
- Java使用选择排序法对数组排序
编写程序,实现将输入的字符串转换为一维数组,并使用选择排序法对数组进行排序. 思路如下: 点击"生成随机数"按钮,创建Random随机数对象: 使用JTextArea的setTex ...
- java 选择排序法
public class Test3 { /**@author shaobn * @param 选择排序:将a.length - i个元素分别和第i个元素相比较,小的话就将值调换.依次递减进行排列 * ...
- 选择排序法-java详解案例
/** * 功能:选择排序法 * 思想:第一次从R[0]-R[N-1]中选取最小值,与R[0]交换,第二次从R[1]-R[N-1]中选取最小值,与R[1]交换, * 第三次从R[2]-R[N-1]中 ...
- Java 快速排序法 冒泡排序法 选择排序法 插入排序法
1.快速排序的原理: 选择一个关键值作为基准值.比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的). 从后往前比较,用基准值和最后一个值比较,如果比基准值小的交换位置,如果 ...
- 基于python语言的经典排序法(冒泡法和选择排序法)
前 每逢周末就遇雨期,闲暇之余,捣鼓了下python,心心念想学习,今天就在电脑上装了个2.7,学习了下经典算法,冒泡与选择排序法 第一次写关于python的文章,说的不当之处,多多指正,我积极改正 ...
- 选择排序法、冒泡排序法、插入排序法、系统提供的底层sort方法排序之毫秒级比较
我的代码: package PlaneGame;/** * 选择排序法.冒泡排序法.插入排序法.系统提供的底层sort方法排序之毫秒级比较 * @author Administrator */impo ...
- 【Algorithm】选择排序法
简单的选择排序法思想: * 首先找到数组中最小的元素,将它和数组第一个元素互换位置(如果第一个元素就是最小那么它就和自己交换). * 其次,在剩下的元素中找到最小的元素,将它与数组的第二个元素互换位置 ...
- 【排序基础】1、选择排序法 - Selection Sort
文章目录 选择排序法 - Selection Sort 为什么要学习O(n^2)的排序算法? 选择排序算法思想 操作:选择排序代码实现 选择排序法 - Selection Sort 简单记录-bobo ...
- C语言实现冒泡排序法和选择排序法代码参考
为了易用,我编写排序函数,这和直接在主调函数中用是差不多的. 我认为选择排序法更好理解!请注意 i 和 j ,在写代码时别弄错了,不然很难找到错误! 冒泡排序法 void sort(int * ar, ...
随机推荐
- MySQL 其它基本操作
索引 所谓索引,就是类似于书的目录,目的也类似,都是为了提高检索速度.ALTER TABLE <表名> ADD INDEX <索引名(列名)>;或者CREATE INDEX & ...
- Delphi与Windows 7下的用户账户控制(UAC)机制(有可能需要取消enable runtime themes)
WIN7/WIN8/WIN10, Vista提供的UAC机制,它的主要目的是防止对于操作系统本身的恶意修改.对于Delphi程序的影响,UAC主要在于以下几点:1.由于UAC机制,Delphi对于系统 ...
- 12 寸 Retina MacBook 的大秘密: 可用移动电源充电
苹果新款12寸Retina MacBook虽然只有一个USB-C接口,但这个接口的能力却十分强大.它不仅可以进行数据传输和视频输出,还能接收和输入电源.这也就是说,你可以使用移动电源对其进行充电,如果 ...
- 网络软件,BA File,Disk,Photo,BackupTools等等(Mac版)
Auto FTP Manager 6.01Crossworld CrossFTP Enterprise v1.97.7 http://www.airexplorer.net/en/index.phpC ...
- ASP.NET Web API 直到我膝盖中了一箭【1】基础篇
蓦然回首,那些年,我竟然一直很二. 小时候,读武侠小说的时候,看到那些猪脚,常常会产生一种代入感,幻想自己也会遭遇某种奇遇,遇到悬崖跳下去是不是有本“武林秘笈”在等着?长大以后也是一样,多少人梦着醒着 ...
- Python字典的合并与拆分
1.字典的合并 dict1={1:[1,11,111],2:[2,22,222]} dict2={3:[3,33,333],4:[4,44,444]} dictMerged2=dict(dict1, ...
- JVM(六):探究类加载过程-下
JVM(六):探究类加载过程-下 上文说了类加载过程的5个阶段,着重介绍了各个阶段做的工作.在本文中,我们对执行加载阶段的主体进行探讨,学习类加载器的模型和逻辑,以及我们该如何自定义一个类加载器. 定 ...
- spark开发常见问题之一:java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
最近在学习研究pyspark机器学习算法,执行代码出现以下异常: 19/06/29 10:08:26 ERROR Shell: Failed to locate the winutils binary ...
- 10-pymysql的应用
import pymysql # user = input('请输入用户名:') # pwd = input('请输入密码:') # 1.创建连接 conn = pymysql.connect(hos ...
- __file__、__name__、__dict__方法整理
本文主要介绍__file__.__name__.__dict__三个方法的作用. #01 __file__:打印当前文件的位置. # import os # print(__file__) # 在py ...