java不用任何已有方法完全自写的去重法

package aa;
class InsertSort{
	private long[] a;
	private int nElems;
	//构造方法
	public InsertSort(int max){
		a = new long[max];
		nElems = 0;
	}
	//插入方法
	public void insert(long value){
		a[nElems] = value;
		nElems ++;
	}
	//显示方法
	public void display(){
		for(int j = 0; j < nElems; j++)
		{
			System.out.println(a[j] + " ");
		}
		System.out.println("");
	}
	//排序方法
	public long[] insertionSort(){
		int out,in;
		for(out = 1; out < nElems; out++)
		{
			long temp = a[out];
			in = out;
			while(in > 0 && a[in-1] >= temp)
			{
				a[in] = a[in - 1];
				in --;
			}
			a[in] = temp;
		}
		return a;
	}
	//去重方法
	public void noDups(long[] arr){
		
		for(int i = 1; i < nElems - 1; i++)//遍历数组元素,从第二项开始
		{
			for(int j = 0; j < i ; j++)//每一轮比较的次数
			{
				if(a[j] == a[i]) //如果遍历项和之前某一项相等
				{
					int k = i;//取出遍历项的索引
					while(k+1 < nElems){//遍历 遍历项之后的元素项
						a[k] = a[k+1];//将遍历项之后的元素项前移一位
						k++;						
					}
					nElems --;//数组长度减一
					i--;//因为遍历项后一项前移到遍历项,如果i不减一则少比较一项
				}
				
			}
		}
	}
}
public class InsertSortApp {
	public static void main(String[] args){
		int maxSize = 100;
		InsertSort arr = new InsertSort(maxSize);
		
		arr.insert(77);
		arr.insert(99);
		arr.insert(44);
		arr.insert(55);
		arr.insert(22);		
		arr.insert(88);
		arr.insert(11);
		arr.insert(00);
		arr.insert(77);
		arr.insert(77);
		
		arr.display();
		long[] sortarr = arr.insertionSort();
		arr.display();
		arr.noDups(sortarr);
		arr.display();
	}
	
}

  

posted on 2017-09-16 22:16  iwebkit  阅读(536)  评论(0编辑  收藏  举报

导航