插入排序的核心思想:
抽出一个元素,在其前面的元素中找到适当的位置进行插入。
其参考实现如下:
package com.zcp.ch04;
/**
@author Administrator
冒泡排序的实现
*/
public class InsertArray {//数组
private long[] arr = null;//数组中有效数据的大小
private int elems;
public InsertArray() {
arr = new long[50];
}public InsertArray(int length){
arr = new long[length];
}/**
/**
}
/***
}
/***
/**
}
/**
该方法主要是变量数组并显示
*/
public void disPlay(){
for (int i = 0; i < elems; i++) {
System.out.print(arr[i]+ " " );
}
System.out.println();
}
插入排序的算法
插入一个元素,在其前面的元素中找到适当的位置进行插入
分析:从插入排序的定义可以看出,插入一个元素在其前面的元素中找到合适的位置进行插入
所以:我们在找这个元素的时候需要从第二个元素开始找(数组的下标为1),然后依次找后面的元素
*/
public void insertSort(){long keyValue = 0;
//这里定义i的目的就是我们需要找的元素的坐标
for (int i = 1; i < elems; i++) {
//获取到我们要查找的一个元素
keyValue = arr[i];
int j = 0;
for (j = i; ((j > 0) && (arr[j-1] > keyValue)); j--) {
//通过里面的判断arr[j-1]>keyValue 的值的时候,将整体右移,空出最左边的位置
arr[j] = arr[j-1];
}
//将选择的数据插入到最左边
arr[j] = keyValue;
}
@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;
}
删除数据的操作,删除成功返回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;
查找指定的数据,如果能够查找到则返回数组的坐标,否则返回-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;
插入数据的操作
@param value
*/
public void insert(long value){
arr[elems] = value;
elems++;
}
}
测试Demo如下:
package com.zcp.ch04;
public class TestInsertMain {
public static void main(String[] args) { InsertArray bubbleArray = new InsertArray(); bubbleArray.insert(10); bubbleArray.insert(500); bubbleArray.insert(80); bubbleArray.insert(2); bubbleArray.insert(23); bubbleArray.disPlay(); bubbleArray.insertSort();;; System.out.println("选择排序后的数据如下:"); bubbleArray.disPlay();}
}
共同學(xué)習(xí),寫下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章