欢迎来到天天文库
浏览记录
ID:16891074
大小:421.84 KB
页数:9页
时间:2018-08-25
《华为笔试,必过!!!程序员必知的8大排序(三)-------冒泡排序,快速排序(java实现)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、前几天,看到一篇前辈的博文“程序员必知的8大排序”,不禁的手痒起来,重新翻开严蔚敏老师的《数据结构》复习了一遍,然后一一的用java去实现,其中有不足之处,还望各位道友指正出来。 先来看看8种排序之间的关系: 1, 直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2]个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。(2)实例20currencydeposit,weprescribeapassonaregularbasis,qilucardaccountona
2、regularbasis),certificatebondsandsavingsbonds(electronic);3.notdrawnonabanksavingscertificate,certificatebondsapplyformortgageloans,acceptingonlythelender(3)用java实现[plain] viewplaincopy1. package com.njue; 2. 3. 4. 5.publicclass insertSort { 6. 7.public insertSort(){ 8. 9
3、. int a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51}; 10. 11. int temp=0; 12. 13. for(int i=1;i=0&&temp4、1]=a[j]; //将大于temp的值整体后移一个单位 22. 23. } 24. 25. a[j+1]=temp; 26. 27. } 28. 29. for(int i=0;i5、notdrawnonabanksavingscertificate,certificatebondsapplyformortgageloans,acceptingonlythelender1. 2. System.out.println(a[i]); 3. 4.} 5. 6.} 2, 希尔排序(最小增量排序)(1)基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。当增6、量减到1时,进行直接插入排序后,排序完成。(2)实例:(3)用java实现[plain] viewplaincopy1.publicclass shellSort { 2. 3.publicshellSort(){ 4. 5. int a[]={1,54,6,3,78,34,12,45,56,100}; 6. 7. double d1=a.length; 8. 9. int temp=0; 10. 11. while(true){ 20currencydeposit,weprescribeapassonaregul7、arbasis,qilucardaccountonaregularbasis),certificatebondsandsavingsbonds(electronic);3.notdrawnonabanksavingscertificate,certificatebondsapplyformortgageloans,acceptingonlythelender1. 2. d1= Math.ceil(d1/2); 3. 4. int d=(int) d1; 5. 6. for(int x=0;x8、 8. for(
4、1]=a[j]; //将大于temp的值整体后移一个单位 22. 23. } 24. 25. a[j+1]=temp; 26. 27. } 28. 29. for(int i=0;i5、notdrawnonabanksavingscertificate,certificatebondsapplyformortgageloans,acceptingonlythelender1. 2. System.out.println(a[i]); 3. 4.} 5. 6.} 2, 希尔排序(最小增量排序)(1)基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。当增6、量减到1时,进行直接插入排序后,排序完成。(2)实例:(3)用java实现[plain] viewplaincopy1.publicclass shellSort { 2. 3.publicshellSort(){ 4. 5. int a[]={1,54,6,3,78,34,12,45,56,100}; 6. 7. double d1=a.length; 8. 9. int temp=0; 10. 11. while(true){ 20currencydeposit,weprescribeapassonaregul7、arbasis,qilucardaccountonaregularbasis),certificatebondsandsavingsbonds(electronic);3.notdrawnonabanksavingscertificate,certificatebondsapplyformortgageloans,acceptingonlythelender1. 2. d1= Math.ceil(d1/2); 3. 4. int d=(int) d1; 5. 6. for(int x=0;x8、 8. for(
5、notdrawnonabanksavingscertificate,certificatebondsapplyformortgageloans,acceptingonlythelender1. 2. System.out.println(a[i]); 3. 4.} 5. 6.} 2, 希尔排序(最小增量排序)(1)基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。当增
6、量减到1时,进行直接插入排序后,排序完成。(2)实例:(3)用java实现[plain] viewplaincopy1.publicclass shellSort { 2. 3.publicshellSort(){ 4. 5. int a[]={1,54,6,3,78,34,12,45,56,100}; 6. 7. double d1=a.length; 8. 9. int temp=0; 10. 11. while(true){ 20currencydeposit,weprescribeapassonaregul
7、arbasis,qilucardaccountonaregularbasis),certificatebondsandsavingsbonds(electronic);3.notdrawnonabanksavingscertificate,certificatebondsapplyformortgageloans,acceptingonlythelender1. 2. d1= Math.ceil(d1/2); 3. 4. int d=(int) d1; 5. 6. for(int x=0;x8、 8. for(
8、 8. for(
此文档下载收益归作者所有