博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java常见数据算法_选择排序
阅读量:6196 次
发布时间:2019-06-21

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

选择排序的原理:

遍历所有的元素,得到最小的元素,并将最小的元素与左边第一个元素进行交换,再次遍历除了第一个位置的所有元素,得到最小的元素,与左边第二个元素进行交换。当进行第二次遍历的时候,将最小的元素与左边的第二个元素进行交换,如此循环遍历,即可得到排序后的元素。
Demo实现的基本基本步骤:
1、准备数组
2、编写常见的数组操作方法
3、编写选择排序的方法
4、测试选择排序
具体参考如下:
package com.zcp.ch03;

/**

  • @author Administrator
  • 冒泡排序的实现

    */
    public class SelectArray {

    //数组

    private long[] arr = null;

    //数组中有效数据的大小

    private int elems;
    public SelectArray() {
    arr = new long[50];
    }

    public SelectArray(int length){

    arr = new long[length];
    }

    /**

    • 插入数据的操作
    • @param value
      */
      public void insert(long value){
      arr[elems] = value;
      elems++;
      }

    /**

    • 查找指定的数据,如果能够查找到则返回数组的坐标,否则返回-1.
    • @param value
    • @return

      */
      public int find(long value){
      int i = 0;
      for(i=0;i<elems;i++){
      if(value==arr[i])
      break;
      }

      if(i >(elems-1)){

      return -1;
      }

      return i;

    }

    /***

    • 删除数据的操作,删除成功返回true,删除失败返回false
    • @param value

      */
      public boolean delete(long value){

      int key = find(value);

      if(key == -1){
      System.out.println("删除数据失败,未查找到要删除的数据");
      return false;
      }
      for (int i = key; i < elems; i++) {
      arr[i] = arr[i+1];
      }
      elems--;
      return true;

    }

    /***

    • @param oldValue
    • @param newValue
    • @return 如果修改成功返回true,修改失败返回false
      */
      public boolean changeValue(long oldValue,long newValue){
      int key = find(oldValue);
      if(key == -1){
      System.out.println("需要修改的数据不存在,修改失败");
      return false;
      }
      arr[key] = newValue;
      return true;
      }

    /**

    • 该方法主要是实现了选择排序
    • 具体的实现描述如下:
    • 该方法中的min 即表示最小的元素
    • 在进行一次遍历后就将最小的元素放到数组的最左边,然后循环进行即可实现选择排序
    • */

      public void selectSort(){

      int min = 0;

      long tmp = 0;
      for (int i = 0; i < elems-1; i++) {

      for (int j = i; j < elems; j++) {    if(arr[min] > arr[j]){        min = j;    }}tmp = arr[i];arr[i] = arr[min];arr[min] = tmp;

      }

    }

    /**

    • 该方法主要是变量数组并显示
      */
      public void disPlay(){
      for (int i = 0; i < elems; i++) {
      System.out.print(arr[i]+ " " );
      }
      System.out.println();
      }

}

测试代码如下:
package com.zcp.ch03;

public class TestSelectMain {

public static void main(String[] args) {    SelectArray bubbleArray = new SelectArray();    bubbleArray.insert(10);    bubbleArray.insert(50);    bubbleArray.insert(80);    bubbleArray.insert(2);    bubbleArray.insert(2);    bubbleArray.disPlay();    bubbleArray.selectSort();;    System.out.println("选择排序后的数据如下:");    bubbleArray.disPlay();}

}

转载于:https://blog.51cto.com/7298246/2154949

你可能感兴趣的文章
Flymeos插桩适配教程
查看>>
Elasticsearch教程(九) elasticsearch 查询数据 | 分页查询
查看>>
C#的delegate简单练习
查看>>
还在用PS磨皮去皱?看看如何用神经网络高度还原你的年轻容貌!
查看>>
YARN中内存的设置
查看>>
json 解析豆瓣ApiURL
查看>>
java 基础2
查看>>
大端模式与小端模式、网络字节顺序与主机字节顺序
查看>>
微信支付申请90%的商户都卡在这儿了,申请微信支付,商户功能设置详细说明...
查看>>
9.7、Libgdx之振动器
查看>>
jsp九大内置对象
查看>>
马哥6-3
查看>>
制作一款微信表情
查看>>
高仿Instagram 页面效果android特效
查看>>
jsonp跨域访问+AES,RSA加密
查看>>
我的友情链接
查看>>
超强vim配置文件
查看>>
Juniper 基于路由的×××
查看>>
OSI七层模型03——数据封装
查看>>
UMail轻松搭建linux邮件服务器(一体盘安装)
查看>>