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