`
seastar09
  • 浏览: 16691 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

排序方法举例

阅读更多
冒泡排序:相邻两元素进行比较,如有需要则进行交换,每完成一次循环就将最大元素排在最后(如从小到大排序),下一次循环是将其他的数进行类似操作
import java.util.Random;


public class SortTest {

/**
* @param args
*/

public static void main(String[] args) {

int[] array=new SortTest().numCreate();
new SortTest().numSort(array);
   
}
public int[] numCreate(){
int[] array = new int[10];
for(int i=0;i<10;i++){
//array[i]=(int)(Math.random()*100);
Random r = new Random();
array[i] = r.nextInt(100);
for(int j=0;j<i;j++){
if(array[i] == array[j]){
i--;
break;
}
}
}
for(int t=0;t<array.length;t++){
System.out.print(array[t]+",");
}
return array;
}
public void numSort(int[] array){
for(int i=0;i<array.length;i++){
for(int j=0;j<array.length-1-i;j++){


int temp;
if(array[j] < array[j+1]){
temp = array[j+1];
array[j+1] = array[j];
array[j] = temp;
}
}
}
for(int t=0;t<array.length;t++){
System.out.print("-----"+array[t]);
}
}

}

二分排序算法:(递归方式)
import java.util.Random;


public class SortTest {

/**
* @param args
*/

public static void main(String[] args) {

//int[] array=new SortTest().numCreate();
int[] array = {11,13,16,23,29,45,47,67,78,89};
int x=29;
System.out.println(new SortTest().numSort(array,x,0,array.length-1));
   
}

public int numSort(int[] array,int x,int begin,int end){
if(x < array[begin] || x>array[end] || begin > end)
return -1;

int middle = (begin+end)>>>1;
if(x < array[middle]){
return numSort(array,x,begin,middle);
} else if(x > array[middle]){
return numSort(array,x,middle,end);
}else {
return middle;
}
}

}
非递归查找
public int numSort(int[] array,int x,int begin,int end){
if(x < array[begin] || x>array[end] || begin > end)
return -1;
int index=0;
while( begin < end){
int middle = (begin+end)>>>1;
if(x < array[middle]){
end = middle-1;
}else if(x> array[middle]){
begin = middle + 1;
}else {
return middle;
}
}
return -1;
}

插入排序法:将一个记录插入到已排好序的有序表(有可能是空表)中,从而得到一个新的记录数增1的有序表。
public void numSort(int[] array){
for(int i=1;i<array.length;i++){
for(int j=0;j<i;j++){
int temp;
if(array[j] > array[i]){
temp = array[i];
array[i]=array[j];
array[j]=temp;
}
}

}
for(int t=0;t<array.length;t++){
System.out.print("-----"+array[t]);
}
}

选择排序法:每一趟从待排序的数据元素中选出最小(或最大)的一个元素, 顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。

public void numSort(int[] array){
for(int i=1;i<array.length;i++){
int index=0;
for(int j=1;j<=array.length-i;j++){
if(array[j] > array[index]){
index=j;
}
}
int temp;
temp = array[array.length-i];
array[array.length-i]=array[index];
array[index]=temp;
}
for(int t=0;t<array.length;t++){
System.out.print("-----"+array[t]);
}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics