资源描述:
《常用排序算法分析与实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、·常用排序算法分析与实现(一)(Java版)··插入排序·直接插入排序、希尔排序·选择排序·简单选择排序、堆排序·交换排序·冒泡排序、快速排序·归并排序··基数排序·排序基类Java代码1.packagesort; 2.3.importjava.util.Arrays; 4.importjava.util.Comparator; 5.importjava.util.Random; 6.7./**8.*排序接口,所有的排序算法都要继承该抽象类,并且要求数组中的9.*元素要具有比较能力,即数组元素已实现了Comparab
2、le接口10.*11.*@authorjzj1.*@date2009-12-52.*3.*@param4.*/5.publicabstractclassSort>{ 6.7.publicfinalComparator DEFAULT_ORDER=newDefaultComparator(); 8.publicfinalComparator REVERSE_ORDER=newReverseComparator(); 9.10./**11. *排序算法,需实现,对数组中指定的元素进行排序12. *@param
3、array待排序数组13. *@paramfrom从哪里14. *@paramend排到哪里15. *@paramc16. */17.publicabstractvoidsort(E[]array,intfrom,intend,Comparator c); 18.19./**20. *对数组中指定部分进行排序21. *@paramfrom从哪里22. *@paramlen排到哪里23. *@paramarray待排序数组24. *@paramc比较器25.
4、*/26.publicvoidsort(intfrom,intlen,E[]array,Comparator c){ 27. sort(array,0,array.length-1,c); 28. } 29.30./**31. *对整个数组进行排序,可以使用自己的排序比较器,也可使用该类提供的两个比较器32. *@paramarray待排序数组1. *@paramc比较器2. */3.publicfinalvoidsort(E[]array,Comparator c){ 4.
5、 sort(0,array.length,array,c); 5. } 6.7./**8. *对整个数组进行排序,采用默认排序比较器9. *@paramarray待排序数组10. */11.publicfinalvoidsort(E[]array){ 12. sort(0,array.length,array,this.DEFAULT_ORDER); 13. } 14.15.//默认比较器(一般为升序,但是否真真是升序还得看E是怎样实现Comparable接口的)16.
6、privateclassDefaultComparatorimplementsComparator { 17.publicintcompare(Eo1,Eo2){ 18.returno1.compareTo(o2); 19. } 20. } 21.22.//反序比较器,排序刚好与默认比较器相反23.privateclassReverseComparatorimplementsComparator { 24.publicintcompare(Eo1,Eo2){ 25.returno2.compareTo
7、(o1); 26. } 27. } 28.29./**30. *交换数组中的两个元素的位置31. *@paramarray待交换的数组32. *@parami第一个元素33. *@paramj第二个元素34. */1.protectedfinalvoidswap(E[]array,inti,intj){ 2.if(i!=j){//只有不是同一位置时才需交换3. Etmp=array[i]; 4. array[i]=array[j];
8、 5. array[j]=tmp; 6. } 7. } 8.9./**10. *数组元素后移11. *@paramarray待移动的数组12. *@paramstartIndex从哪个开始移13. *@paramendIndex到哪个元素止14. */15.protectedfi