java 选择排序方法原理_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

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

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值