java常见数据算法_选择排序

选择排序的原理:
遍历所有的元素,得到最小的元素,并将最小的元素与左边第一个元素进行交换,再次遍历除了第一个位置的所有元素,得到最小的元素,与左边第二个元素进行交换。当进行第二次遍历的时候,将最小的元素与左边的第二个元素进行交换,如此循环遍历,即可得到排序后的元素。
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();
}

}

原文地址:http://blog.51cto.com/7298246/2154949

时间: 2024-08-03 06:23:51

java常见数据算法_选择排序的相关文章

java常见数据算法_冒泡排序

常见的算法有非常多,今天我们就一起看看常见的算法之冒泡排序.冒泡排序的主要核心思想就是:比较相邻两个元素,如果前一个元素的值比后一个元素的值大,则进行交换,经过对每个元素的比较,最后将最大的元素设置成最后一个元素,循环重复该操作,最后形成从小到大排序. 下面来看看我们的实例代码: 1.准备我们的数组 2.准备数组的常用操作方法 3.编写冒泡排序算法 4.测试冒泡排序算法的正确性: package com.zcp.ch02; /** @author Administrator 冒泡排序的实现*/p

java结构与算法之选择排序

一 .java结构与算法之选择排序 什么事选择排序:从一组无序数据中选择出中小的的值,将该值与无序区的最左边的的值进行交换. 简单的解释:假设有这样一组数据 12,4,23,5,找到最小值 4 放在最右边,然后找到 5 放在  4 的后面,重复该操作. 选择排序参考代码: public class ChooseSort { int[] array = null; @Test public void testPopSort() { array = new int[5]; array[0] = 45

JavaScript ,Python,java,Go系列算法之选择排序

常见的内部排序算法有:插入排序.希尔排序.选择排序.冒泡排序.归并排序.快速排序.堆排序.基数排序等.用一张图概括: 选择排序 选择排序是一种简单直观的排序算法,无论什么数据进去都是O(n2) 的时间复杂度.所以用到它的时候,数据规模越小越好.唯一的好处可能就是不占用额外的内存空间了吧.通俗来说就是你们中间谁最小谁就出列,站到队列的最后边,然后继续对着剩余的无序数组说你们中间谁最小谁就出列,站到队列的最后边,一直到最后一个,继续站到最后边,这样数组就有了顺序,从小到大. 1.算法步骤 首先在未排

Java再学习-算法之选择排序

 继上篇文章讲到插入排序和冒泡排序算法.这次来看一下选择排序.         和上两个循环一样,还是分成两套循环,外循环起指针作用,用来指定每次循环的元素值和元素序列,而内部循环则起到真正的快速排序逻辑.首先如果我们取到第i值,那么我们要与第i+1,i+2,....等元素进行对比,找到i元素后面最小的元素,与之交换位置即可,只不过这里的交换位置比较新颖,我们看下面的代码: package cn.tgb.sort; import java.util.Arrays; //选择排序 public c

数组常见的操作_选择排序

排序分类:       内部排序:就是将需要处理的所有数据都加载到内部存储器中进行排序                交换式排序法:是运用数值较后,依判断规则对数据位置进行交换,以达到排序的目的                    冒泡排序法(Bubble Sort)                    快速排序法(Quick Sort)                选择式排序法:                     选择排序法(Select Sort)                

算法_选择排序

一.为什么学了之后过段时间又会忘记了? 因为没有去运用它和认为面试需要而没有真正的重视.现在给它赋予意义:1.那就是基础牢固,才可触类旁通2.真正记得和随时可以拿出手,那么面试可以PK掉一大批人.不然看到一个精妙的算法就学一个,永远只是学到某一个而没有自己的思维在里面. 二.选择排序算法代码 #include <iostream> using namespace std; void selectionSort(int arr[],int n){ for (int i = 0; i < n

Java中的经典算法之选择排序(SelectionSort)

Java中的经典算法之选择排序(SelectionSort) a) 原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕.也就是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录.基于此思想的算法主要有简单选择排序.树型选择排序和堆排序.(这里只介绍常用的简单选择排序) b) 简单选择排序的基本思想:给定数组:int[] arr={里面n个数据}:第1趟排序,在待排序数据arr[1]~arr[n]中选出最小的数

常用算法之----选择排序

Java中的经典算法之选择排序(SelectionSort) a) 原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕.也就是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录.基于此思想的算法主要有简单选择排序.树型选择排序和堆排序.(这里只介绍常用的简单选择排序) b) 简单选择排序的基本思想:给定数组:int[] arr={里面n个数据}:第1趟排序,在待排序数据arr[1]~arr[n]中选出最小的数

【排序算法】选择排序(Selection sort)

0. 说明 选择排序(Selection sort)是一种简单直观的排序算法. 它的工作原理如下. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾.以此类推,直到所有元素均排序完毕. 选择排序的主要优点与数据移动有关.如果某个元素位于正确的最终位置上,则它不会被移动.选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对 n 个元素的表进行排序总共进行至多 n-1 次交换.在所有的完全依