重拾编程之路--直接选择排序算法
2016-01-11 15:11
302 查看
算法理解:
for{
以未排序序列的第一个元素作为基准,记录标记索引;
for{
从下一个元素到序列末尾,与基准元素值进行比较;
if{
若当前元素小于基准元素,标记索引值记为当前元素的索引;
}
}
if{
标记索引是否等于基准元素对应的索引;
若相同,则继续;
不同则交换标记索引和基准索引对应的元素值;
}
}
package com.lulu.leetcode;
//可以把数组排序的算法写成一个接口,重写sort()实现不同方式的排序算法
public class MyChoseSort {
public void sort1(int []nums ){//该算法每次比较都交换数组元素
int len=nums.length;
for(int i=0;i<len-1;i++){
int min=nums[i];
for(int j=i+1;j<len;j++){
if(nums[j]<nums[i]){
min=nums[j];
nums[j]=nums[i];
nums[i]=min;
}
}
}
}
public void sort2(int []nums ){//该算法只有在最小元素的下标和当前基准元素的下标不一致时,才交换数组元素,减少了交换次序
int len=nums.length;
for(int i=0;i<len-1;i++){
int minIndex=i;
for(int j=i+1;j<len;j++){
if(nums[j]<nums[i]){
minIndex=j;
}
}
if(minIndex!=i){
int min=nums[minIndex];
nums[minIndex]=nums[i];
nums[i]=min;
}
}
}
public void outp(int nums[]) {//按格式输出数组
String string = "";
for (int i : nums) {
string = string + i + "-->";
}
System.out.println(string);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int []nums={1,3,2,6,5};
MyChoseSort myChoseSort=new MyChoseSort();
myChoseSort.sort2(nums);
myChoseSort.outp(nums);
}
}
for{
以未排序序列的第一个元素作为基准,记录标记索引;
for{
从下一个元素到序列末尾,与基准元素值进行比较;
if{
若当前元素小于基准元素,标记索引值记为当前元素的索引;
}
}
if{
标记索引是否等于基准元素对应的索引;
若相同,则继续;
不同则交换标记索引和基准索引对应的元素值;
}
}
package com.lulu.leetcode;
//可以把数组排序的算法写成一个接口,重写sort()实现不同方式的排序算法
public class MyChoseSort {
public void sort1(int []nums ){//该算法每次比较都交换数组元素
int len=nums.length;
for(int i=0;i<len-1;i++){
int min=nums[i];
for(int j=i+1;j<len;j++){
if(nums[j]<nums[i]){
min=nums[j];
nums[j]=nums[i];
nums[i]=min;
}
}
}
}
public void sort2(int []nums ){//该算法只有在最小元素的下标和当前基准元素的下标不一致时,才交换数组元素,减少了交换次序
int len=nums.length;
for(int i=0;i<len-1;i++){
int minIndex=i;
for(int j=i+1;j<len;j++){
if(nums[j]<nums[i]){
minIndex=j;
}
}
if(minIndex!=i){
int min=nums[minIndex];
nums[minIndex]=nums[i];
nums[i]=min;
}
}
}
public void outp(int nums[]) {//按格式输出数组
String string = "";
for (int i : nums) {
string = string + i + "-->";
}
System.out.println(string);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int []nums={1,3,2,6,5};
MyChoseSort myChoseSort=new MyChoseSort();
myChoseSort.sort2(nums);
myChoseSort.outp(nums);
}
}
相关文章推荐
- Python缩进快捷键
- 浅谈Java序列化
- 辛星PHP教程之yii和ci教程已经写完,望与朋友们交流
- 【Spring3】(1)初识Spring
- day11 python学习随笔
- 在代码中,子view设置的属性在viewGroup中无效的问题解决
- Spring粘合iBatis时多种配置SqlMapConfig.xml路径的方法
- Python 装饰器(decorator )的深度解读
- C++之文件IO
- Django开发博客(六)——添加markdown支持
- Python之paramiko模块和SQL连接API
- 基于注解的Spring AOP的配置和使用
- Neither the JAVA_HOME nor the JRE_HOME environment variable is defined ;At least one of these environment variable is needed to run this program
- Lua中的模块与module函数详解
- 中介者模式 C#
- Elasticsearch基础教程
- Lua模块和模块载入浅析
- 【第七章】 对JDBC的支持 之 7.3 关系数据库操作对象化 ——跟我学spring3
- Python:使用threading模块实现多线程(转)
- Javaweb学习总结(三):Myeclipse常用的快捷键