范文无忧网范文学习范文大全

java二分法排序

03月24日 编辑 fanwen51.com

[哪位帮我讲讲java中的快速排序法]快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按次方法对这两...+阅读

java二分法排序

二分排序就是用先用二分查找法来查某一个元素,然后再用别的排序算法来进行排序。 package insert; public class InsArrayApp { public static void main(String[] args) { int size = 100; InsArray arr = new InsArray(size); arr.insert

(10); arr.insert

(9); arr.insert

(8); arr.insert

(7); arr.insert

(6); arr.insert

(10); arr.insert

(9); arr.insert

(8); arr.insert

(5); arr.insert

(4); arr.insert

(3); arr.insert

(2); arr.insert

(1); arr.display(); // arr.insertSort(); // arr.display(); // System.out.println(arr.median()); // arr.noDups(); arr.noDups2(); arr.display(); } } class InsArray { private int[] a; private int nElems; public InsArray(int size) { a = new int[size]; nElems = 0; } public void insert(int value) { a[nElems] = value; nElems++; } public void display() { for (int i = 0; i0&a[in-1]>=tmp){ a[in] = a[in-1]; --in; } a[in] = tmp; }*/ for(out = 1;out int tmp = a[out]; in = out; while(in>0){ if(a[in-1]>=tmp){ a[in] = a[in-1]; --in; ++copy; ++compare;} else{ break; } } ++compare; a[in] = tmp; } System.out.println("copy:" + copy + "compare:" + compare); } public int median(){ insertSort(); int m = nElems/2; return a[m]; } public void noDups(){ insertSort(); /* InsArray tmp = new InsArray(nElems); for(int i = 0;i for(int j = i+1;j if(a[i] == a[j]){ a[j] = -1; } if(a[i]!=-1) tmp.insert(a[i]); } */ InsArray tmp = new InsArray(nElems); int i; for(int j = 0;j /*if(tmp.nElems==tmp.find(this.a[j])) //binary find tmp.insert(this.a[j]); else continue;*/ for( i = 0; iupperBound) return nElems; else { if(a[curIn]>searchKey) upperBound = curIn-1; else lowerBound = curIn+1; } } } public void noDups2(){ insertSort(); for(int i = 0;i for(int j = i+1;j if(a[i] == a[j]){ a[j] = -1; } } display(); int index = 0; for(int i=0;i if(a[i]!=-1){ index++; }else{ for(int j=index+1;j if(a[j]!=-1){ a[index] = a[j]; a[j]=-1; index++; break; } } } } nElems = index; } } 上面的代码,是我以前敲的,有个find()方法是二分查找,然后再用插入排序去进行排序。

二分法排序的程序填空

/*magipan正解*/

/*其实这就是折半插入排序,只是未新开辟空间的插入排序

起始认为第一个元素是有序的(一个元素当然是有序的。。。)

然后一个一个的折半插入已经排序好的有序序列。

low指向的是已排序好的序列的第一个元素,high指向的是已排序好的序列最后一个元素*/

#include

int a[]={15,7,15,6,4,3,4,6,7};

main()

{

int i,j,k,low,high,mid,t;

for(i=k=1;i

{

low=0;

high=k-1;

while(low<=high)////折半查找时,low与high相遇,则找到插入位置

{

mid=(low+high)/2;

if(a[mid]>=a[i])high=mid-1;///////元素比mid小,因此在low到mid-1范围内搜索位置

else low=mid+1;

}

if(high

{

t=a[i];

for(j=k-1;j>=low;j--) //////插入位置是low,所以low到high=k-1范围内的元素都要向后移动

a[j+1]=a[j];

a[low]=t; //////////////low被赋值为已经被覆盖掉的a[i]

k++;

}

}

for(j=0;j

printf("%4d",a[j]);

printf("\n");

}

C语言编程二分法

#include

#include

double fun(double x) { return 2 * x * x * x - 4 * x * x + 3 * x - 6; }

double root(double a, double b, double e)

{

double x1, x2, y1, x, y;

x1 = a; x2 = b;

do {

x = (x1 + x2)/2;

y = fun(x);

y1 = fun(x1);

if( ( y < 0 & y1 < 0) || (y > 0 & y1 > 0) )

x1 = x;

else

x2 = x;

/*end if*/

}while(fabs(y) > e);

return x;

}

int main(void)

{

double x = root(-10.0f, 10.0f, 1e-8);

printf("%f\n", x);

return 0;

}

/*

运行结果:

2.000000

*/

延伸阅读:

请问Java快速排序法是怎么算的* 步骤为: * 1. 从数列中挑出一个元素,称为 "基准"(pivot), * 2. 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在...

java中快速排序的算法举个例子package person.test; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Random; /** * cl...

Java的排序算法有哪些插入排序: package org.rut.util.algorithm.support; import org.rut.util.algorithm.SortUtil; /** * author treeroot * since 2006-2-2 * version 1.0 */ public class In...

java几种基本排序/** * 冒泡排序 * 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 * 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大...

Java快速排序法是怎么算的/** * 快速排序 * 快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为两个子序列(sub-lists)。 * 步骤为: * 1. 从数列中挑出一个元素,称为 "基准"(pivot), * 2. 重新排...

二分法求函数零点一般地,对于函数f(x),如果存在实数c,当x=c是f(c)=0,那么把x=c叫做函数f(x)的零点。 解方程即要求f(x)的所有零点。 先找到a、b,使f(a),f(b)异号,说明在区间(a,b)内一定有零点,然后求f...

怎样利用二分法找零点利用二分法思想巧解零点存在性问题孔祥武 【摘要】:正二分法可用于求方程的近似解,在处理一类函数零点存在性问题时,利用二分法也可使问题快速获解,达到事半功倍的效果.例1已知...

怎样用二分法求函数零点就是求2个点的中点的值 比如f(x)中f(a)>0,f(b)<0 那就求f((a+b)/2)的值 如果f((a+b)/2)>0把f((a+b)/2)赋值给f(a),f(b)不变,继续重复上面的过程。 如果f((a+b)/2)<0把f((a+b)/2...

java排序算法有多少种java排序算法有多少种,各种排序算法实现和比较:算法和语言无关吧,语言只是把具体的算法实现出来而已。据我了解的排序算法11-13种。排序算法嘛 主要就是个思想而已。不同的算法...

推荐阅读
图文推荐
栏目列表