首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

面试题之——惯用排序算法

2013-10-08 
面试题之——常用排序算法以下排序默认排序效果是从小到大,待排序序列:3,4,63,4,-9,0,1,32,-21.冒泡排序基本

面试题之——常用排序算法

以下排序默认排序效果是从小到大,待排序序列:3,4,63,4,-9,0,1,32,-2

1.冒泡排序

     基本思想:依次交换相邻两个元素,使得大的数据往下沉(或小的数据往上附浮)

                        第一步:比较相邻的两个元素,如果前者比后者大,则交换两元素。否则,不交换。

                        第二步:重复第一步直到最后两个元素比较完成,此时,最大的元素已经在最后面了,此趟排序完成。

                        第三步:去除最后元素,重复上述两步,对最后元素之前的数据进行排序。

                        第四步:每趟排序完成后,大的数据会忘下沉,也就是需要排序的数据会越来越少,直到没有任何一对数据需要排序,排序成功

      排序过程示例:

面试题之——惯用排序算法

      代码示例:

     代码示例:


       代码示例:

代码示例:

   代码示例:

           

private void MergeSort(int[] array, int start, int end) {if(start == end) {return;}int middle = (end - start + 1)/2 + start;//分的过程MergeSort(array, start, middle-1);MergeSort(array, middle, end);//合并的过程merge(array, start, middle, end);}private void merge(int[] array, int start, int middle, int end) {int i = start, j = middle, loc = 0;int[] copy = new int[end-start+1];while(i<middle && j<=end) {if(array[i]>array[j]) {copy[loc] = array[j];j++;} else {copy[loc] = array[i];i++;}loc++;}while(i<middle) {copy[loc++] = array[i++];}while(j<=end) {copy[loc++] = array[j++];}for(int k=0; k<copy.length; k++) {array[start++] = copy[k];}copy = null;}

热点排行