您的位置:首页 > 理论基础 > 数据结构算法

个人练习数据结构之--------------关于线性数据的有序数组以及之上的二分法查找、不同排序方法的学习

2016-05-14 19:20 871 查看
public class 二分法Prac {

public static void main(String[] args) {

Array a=new Array(10);

a.add(34);

a.add(12);

a.add(89);

a.add(-12);

a.add(0);

a.display();

a.maoPao1();

a.display();

// a.chooseSort();

//a.display();

a.maoPao2();

a.display();

a.insertSort();

a.display();

}

}

class Array{

private int[] array;

int oCount;

Array(int size){

array = new int[size];

}

void add(int ele){

int index;

for (index= 0; index <oCount; index++) {

if(array[index]>ele)

break;

}

for (int j=oCount; j>index; j--) {

array[j]=array[j-1];

}

array[index]=ele;

oCount++;

}

int found(int ele){

int upperBound=oCount-1;

int lowerBound=0;

while(true){

int curPos=(upperBound+lowerBound);

if(array[curPos]==ele)

return curPos;

else if(lowerBound>upperBound){

return oCount;

}else if(array[curPos]>ele){

upperBound=curPos-1;

}else{

lowerBound=curPos+1;

}

}

}

void display(){

for (int i = 0; i <oCount; i++) {

System.out.print(array[i]+" ");

}

System.out.println();

}

void maoPao1(){

for (int i = 0; i < oCount-1; i++) {

for (int j = i+1; j < oCount; j++) {

if(array[i]<array[j]){

int temp=array[i];

array[i]=array[j];

array[j]=temp;

}

}

}

}

void maoPao2(){

for (int i = oCount-1; i>0; i--) {

for (int j = 0; j < i; j++) {

if(array[i]<array[j]){

int temp=array[i];

array[i]=array[j];

array[j]=temp;

}

}

}

}

void chooseSort(){

int out,in,min;

for (out = 0; out < oCount-1; out++) {

min=out;

for (in=out; in < oCount; in++) {

if(array[min]>array[in])

min=in;

}

if(out!=min){

int temp=array[out];

array[out]=array[min];

array[min]=temp;

}

}

}

void insertSort(){

int in,out;

for (out=1; out < oCount; out++) {

int temp=array[out];

in=out;

while(in>0&&array[in-1]<temp){

array[in]=array[in-1];

--in;

}

array[in]=temp;

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: