两个Java排序的小问题以及一个问答题!

来源:百度知道 编辑:UC知道 时间:2024/06/14 16:11:39
两个Java排序的小问题以及一个问答题!

第一个 用插入法来重新排序:
int nombres[] = new int [10];
for ( int i=0; i<nombres.length ; i ++) {
nombres[1] = nombres.length-i ;
}

第二个 是用另一种方法来排序 好像叫2分法 "我们可以改进上面的排序法,用表格中间的元素把表格分成前后两部分并对它们进行排序. 然后我们可以把新的元素放到已排序好的元素的后面或前面 这样可以减少一半的元素移动次数 以这种方式修改第一题里的程序"

第三个 是问题答 问插入法里 进行的比较次数最大会是多少 ? 然后写一下这种排序法的循环次数上有什么特别的地方

求一二题的代码和第三题的问题答案谢谢
对了,不能使用break

必须得用这个{
int nombres[] = new int[10];
for(int i=0;i <nombres.length;i++)
{nombres[i]=nombres.length-i;
}来写,我写了一个,不知道哪出错了,谁给指导一下?
import java.util.*;
public class text
{
public static void main(String[] args)
{
int nombres[] = new int[10];
for(int i=0;i <nombres.length;i++)
{nombres[i]=nombres.length-i;
}

int n = nombres.length;
for (int i = 1; i < n; i++) {
int temp = nombres[i];
int j;
for (j = i - 1; j >= 0 && temp <

1.插入排序
import java.util.*;
public class Test1
{
public static void main(String[] args)
{
int[] a=new int[]{1,2,3,4,5,6};
int[] b=new int[]{7,10,5,8,9,6};
LinkedList list=new LinkedList();
for(int i=0;i<a.length;i++)
{
list.add(a[i]);
}
out:
for(int i=0;i<b.length;i++)
{
for(int j=0;j<list.size();j++)
{
if(b[i]<=(Integer)list.get(j))
{
list.add(j,b[i]);
continue out;
}
}
list.add(list.size(),b[i]);
}
System.out.println(list);
}
}
结果为:[1, 2, 3, 4, 5, 5, 6, 6, 7, 8, 9, 10]

2.二分法
void binsrch( int m[N],int k){
int low,high,mid;
low=0;high=N-1;
while (low<=high){
mid=(low+high)/2;
if (k>m[mid])
high=mid-1;
if (k<m[mid])
low=mid+1;
if (k==m[mid]){
printf("找到此数在数组的%d位,值为%d",mid+1,k);
return;
}