欢迎来到天天文库
浏览记录
ID:12617245
大小:153.50 KB
页数:31页
时间:2018-07-18
《c语言简单查找排序方法及代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第一部分查找1、线性查找法:importjava.util.Scanner;publicclassSearchDataElement{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);int[]array;array=newint[]{8,7,5,4,1,5,9,6,3,4};for(inti=0;i2、play=0;do{System.out.print("请输入要查找的数字0-10");intnum=scanner.nextInt();lable:{for(intt=0;t3、nt();}while(replay==1);}}2、二分查找算法importjava.util.Scanner;publicclassSearchBinary{publicstaticintsearchB(int[]arr,intkey){intlow=0;inthigh=arr.length-1;//while(high>=low){intmid=(low+high)/2;if(key4、ublicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubint[]array=newint[]{2,4,7,11,14,25,33,42,55,64,75,88,89,90,92};intkey;Scannerscanner=newScanner(System.in);System.out.println("请输入关键字:");key=scanner.nextInt();//intresult=searchB(array,key);if(result!=-1)Syst5、em.out.printf("%dfoundinarrrayelement%d",key,result);elseSystem.out.printf("%dnotfoundinarray",key);}}C语言排序方法学的排序算法有:插入排序,合并排序,冒泡排序,选择排序,希尔排序,堆排序,快速排序,计数排序,基数排序,桶排序(没有实现)。比较一下学习后的心得。我不是很清楚他们的时间复杂度,也真的不知道他们到底谁快谁慢,因为书上的推导我确实只是小小了解,并没有消化。也没有完全理解他们的精髓,所以又什么错误的还需要高手指点。呵呵6、。1.普及一下排序稳定,所谓排序稳定就是指:如果两个数相同,对他们进行的排序结果为他们的相对顺序不变。例如A={1,2,1,2,1}这里排序之后是A={1,1,1,2,2}稳定就是排序后第一个1就是排序前的第一个1,第二个1就是排序前第二个1,第三个1就是排序前的第三个1。同理2也是一样。这里用颜色标明了。不稳定呢就是他们的顺序不应和开始顺序一致。也就是可能会是A={1,1,1,2,2}这样的结果。2.普及一下原地排序:原地排序就是指不申请多余的空间来进行的排序,就是在原来的排序数据中比较和交换的排序。例如快速排序,堆排序等都是原地排序,合并7、排序,计数排序等不是原地排序。3.感觉谁最好,在我的印象中快速排序是最好的,时间复杂度:n*log(n),不稳定排序。原地排序。他的名字很棒,快速嘛。当然快了。我觉得他的思想很不错,分治,而且还是原地排序,省去和很多的空间浪费。速度也是很快的,n*log(n)。但是有一个软肋就是如果已经是排好的情况下时间复杂度就是n*n,不过在加入随机的情况下这种情况也得以好转,而且他可以做任意的比较,只要你能给出两个元素的大小关系就可以了。适用范围广,速度快。4.插入排序:n*n的时间复杂度,稳定排序,原地排序。插入排序是我学的第一个排序,速度还是很快的,8、特别是在数组已排好了之后,用它的思想来插入一个数据,效率是很高的。因为不用全部排。他的数据交换也很少,只是数据后移,然后放入要插入的数据。(这里不是指调用插入排序,
2、play=0;do{System.out.print("请输入要查找的数字0-10");intnum=scanner.nextInt();lable:{for(intt=0;t3、nt();}while(replay==1);}}2、二分查找算法importjava.util.Scanner;publicclassSearchBinary{publicstaticintsearchB(int[]arr,intkey){intlow=0;inthigh=arr.length-1;//while(high>=low){intmid=(low+high)/2;if(key4、ublicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubint[]array=newint[]{2,4,7,11,14,25,33,42,55,64,75,88,89,90,92};intkey;Scannerscanner=newScanner(System.in);System.out.println("请输入关键字:");key=scanner.nextInt();//intresult=searchB(array,key);if(result!=-1)Syst5、em.out.printf("%dfoundinarrrayelement%d",key,result);elseSystem.out.printf("%dnotfoundinarray",key);}}C语言排序方法学的排序算法有:插入排序,合并排序,冒泡排序,选择排序,希尔排序,堆排序,快速排序,计数排序,基数排序,桶排序(没有实现)。比较一下学习后的心得。我不是很清楚他们的时间复杂度,也真的不知道他们到底谁快谁慢,因为书上的推导我确实只是小小了解,并没有消化。也没有完全理解他们的精髓,所以又什么错误的还需要高手指点。呵呵6、。1.普及一下排序稳定,所谓排序稳定就是指:如果两个数相同,对他们进行的排序结果为他们的相对顺序不变。例如A={1,2,1,2,1}这里排序之后是A={1,1,1,2,2}稳定就是排序后第一个1就是排序前的第一个1,第二个1就是排序前第二个1,第三个1就是排序前的第三个1。同理2也是一样。这里用颜色标明了。不稳定呢就是他们的顺序不应和开始顺序一致。也就是可能会是A={1,1,1,2,2}这样的结果。2.普及一下原地排序:原地排序就是指不申请多余的空间来进行的排序,就是在原来的排序数据中比较和交换的排序。例如快速排序,堆排序等都是原地排序,合并7、排序,计数排序等不是原地排序。3.感觉谁最好,在我的印象中快速排序是最好的,时间复杂度:n*log(n),不稳定排序。原地排序。他的名字很棒,快速嘛。当然快了。我觉得他的思想很不错,分治,而且还是原地排序,省去和很多的空间浪费。速度也是很快的,n*log(n)。但是有一个软肋就是如果已经是排好的情况下时间复杂度就是n*n,不过在加入随机的情况下这种情况也得以好转,而且他可以做任意的比较,只要你能给出两个元素的大小关系就可以了。适用范围广,速度快。4.插入排序:n*n的时间复杂度,稳定排序,原地排序。插入排序是我学的第一个排序,速度还是很快的,8、特别是在数组已排好了之后,用它的思想来插入一个数据,效率是很高的。因为不用全部排。他的数据交换也很少,只是数据后移,然后放入要插入的数据。(这里不是指调用插入排序,
3、nt();}while(replay==1);}}2、二分查找算法importjava.util.Scanner;publicclassSearchBinary{publicstaticintsearchB(int[]arr,intkey){intlow=0;inthigh=arr.length-1;//while(high>=low){intmid=(low+high)/2;if(key4、ublicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubint[]array=newint[]{2,4,7,11,14,25,33,42,55,64,75,88,89,90,92};intkey;Scannerscanner=newScanner(System.in);System.out.println("请输入关键字:");key=scanner.nextInt();//intresult=searchB(array,key);if(result!=-1)Syst5、em.out.printf("%dfoundinarrrayelement%d",key,result);elseSystem.out.printf("%dnotfoundinarray",key);}}C语言排序方法学的排序算法有:插入排序,合并排序,冒泡排序,选择排序,希尔排序,堆排序,快速排序,计数排序,基数排序,桶排序(没有实现)。比较一下学习后的心得。我不是很清楚他们的时间复杂度,也真的不知道他们到底谁快谁慢,因为书上的推导我确实只是小小了解,并没有消化。也没有完全理解他们的精髓,所以又什么错误的还需要高手指点。呵呵6、。1.普及一下排序稳定,所谓排序稳定就是指:如果两个数相同,对他们进行的排序结果为他们的相对顺序不变。例如A={1,2,1,2,1}这里排序之后是A={1,1,1,2,2}稳定就是排序后第一个1就是排序前的第一个1,第二个1就是排序前第二个1,第三个1就是排序前的第三个1。同理2也是一样。这里用颜色标明了。不稳定呢就是他们的顺序不应和开始顺序一致。也就是可能会是A={1,1,1,2,2}这样的结果。2.普及一下原地排序:原地排序就是指不申请多余的空间来进行的排序,就是在原来的排序数据中比较和交换的排序。例如快速排序,堆排序等都是原地排序,合并7、排序,计数排序等不是原地排序。3.感觉谁最好,在我的印象中快速排序是最好的,时间复杂度:n*log(n),不稳定排序。原地排序。他的名字很棒,快速嘛。当然快了。我觉得他的思想很不错,分治,而且还是原地排序,省去和很多的空间浪费。速度也是很快的,n*log(n)。但是有一个软肋就是如果已经是排好的情况下时间复杂度就是n*n,不过在加入随机的情况下这种情况也得以好转,而且他可以做任意的比较,只要你能给出两个元素的大小关系就可以了。适用范围广,速度快。4.插入排序:n*n的时间复杂度,稳定排序,原地排序。插入排序是我学的第一个排序,速度还是很快的,8、特别是在数组已排好了之后,用它的思想来插入一个数据,效率是很高的。因为不用全部排。他的数据交换也很少,只是数据后移,然后放入要插入的数据。(这里不是指调用插入排序,
4、ublicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubint[]array=newint[]{2,4,7,11,14,25,33,42,55,64,75,88,89,90,92};intkey;Scannerscanner=newScanner(System.in);System.out.println("请输入关键字:");key=scanner.nextInt();//intresult=searchB(array,key);if(result!=-1)Syst
5、em.out.printf("%dfoundinarrrayelement%d",key,result);elseSystem.out.printf("%dnotfoundinarray",key);}}C语言排序方法学的排序算法有:插入排序,合并排序,冒泡排序,选择排序,希尔排序,堆排序,快速排序,计数排序,基数排序,桶排序(没有实现)。比较一下学习后的心得。我不是很清楚他们的时间复杂度,也真的不知道他们到底谁快谁慢,因为书上的推导我确实只是小小了解,并没有消化。也没有完全理解他们的精髓,所以又什么错误的还需要高手指点。呵呵
6、。1.普及一下排序稳定,所谓排序稳定就是指:如果两个数相同,对他们进行的排序结果为他们的相对顺序不变。例如A={1,2,1,2,1}这里排序之后是A={1,1,1,2,2}稳定就是排序后第一个1就是排序前的第一个1,第二个1就是排序前第二个1,第三个1就是排序前的第三个1。同理2也是一样。这里用颜色标明了。不稳定呢就是他们的顺序不应和开始顺序一致。也就是可能会是A={1,1,1,2,2}这样的结果。2.普及一下原地排序:原地排序就是指不申请多余的空间来进行的排序,就是在原来的排序数据中比较和交换的排序。例如快速排序,堆排序等都是原地排序,合并
7、排序,计数排序等不是原地排序。3.感觉谁最好,在我的印象中快速排序是最好的,时间复杂度:n*log(n),不稳定排序。原地排序。他的名字很棒,快速嘛。当然快了。我觉得他的思想很不错,分治,而且还是原地排序,省去和很多的空间浪费。速度也是很快的,n*log(n)。但是有一个软肋就是如果已经是排好的情况下时间复杂度就是n*n,不过在加入随机的情况下这种情况也得以好转,而且他可以做任意的比较,只要你能给出两个元素的大小关系就可以了。适用范围广,速度快。4.插入排序:n*n的时间复杂度,稳定排序,原地排序。插入排序是我学的第一个排序,速度还是很快的,
8、特别是在数组已排好了之后,用它的思想来插入一个数据,效率是很高的。因为不用全部排。他的数据交换也很少,只是数据后移,然后放入要插入的数据。(这里不是指调用插入排序,
此文档下载收益归作者所有