您的位置:首页 > 编程语言

重拾编程之路--直接选择排序算法

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);
}

}


        

                         
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: