html静态网站下载,百度智能建站怎么样,网站群发推广软件,百度页面推广1.冒泡排序 (1) 比较领近的两个数 (2) 如果左边的比右边的数字大#xff0c;则交换位置 (3) 向右移动一位#xff0c;继续比较相邻的两个数 排序示例#xff1a; 一轮排序结束后#xff0c;最大值的位置已经移动最右端#xff0c;再次如此循环#xff0c;最终经过n-1次则…1.冒泡排序 (1) 比较领近的两个数 (2) 如果左边的比右边的数字大则交换位置 (3) 向右移动一位继续比较相邻的两个数 排序示例 一轮排序结束后最大值的位置已经移动最右端再次如此循环最终经过n-1次则完成最终排序。 使用java算法表示外部循环需要经过n-1次。即 for(int i0;in-1;i) 内部循环由于外部循环每完成一次就有一个数字完成最终排序则需要经过n-1-i次比较 for(int j0;jn-1-i;j) 最终冒泡排序的java算法为 int[] anew int[]{18,19,5,8,3};int na.length;for(int i0;in-1;i){for(int j0;jn-1-i;j){if(a[j]a[j1]){int tempa[j1];a[j1]a[j];a[j]temp;}}}for(int k0;kn;k){System.out.println(**a[k]);} 2.快速排序 思路基于分治的思想是冒泡排序的改进版。首先在数组中选择一个基准点然后从数组的两端开始扫描设置lo指标指向开始端hi指向结尾端。 从后半部分开始扫描如果扫描到有比基准点值小的则把这个值赋值给基准点位置。然后从前部分扫描扫描比基准点大的元素扫描到后把该元素赋值与上一个移动的元素。 如此循环直到lohi指针重合则结束一轮循环。这次把基准点的值赋值给最后一个变动的元素这时基准点前面都是比它小的元素后面都是比它大的也就是是确定了基准点的最终位置。 排序过程如下 原始数据 72 6 57 83 42 34 81 12 29 {72 设置为基准点lo指向开始hi指向结尾。从后面扫描发现2972 把29赋值为72} 现在数据 29 6 57 83 42 34 81 12 29 {从前面扫描找比72大的扫描到83则把83赋值给29处} 现在数据 29 6 57 83 42 34 81 12 83 {从后面扫描找比72小的发现12将12赋值给(83)} 现在数据 29 6 57 12 42 34 81 (12) 83 { 从前面扫描找比72大的发现81把81赋值给(12)} 现在数据 29 6 57 12 42 34 (81) 81 83 {hi lo 重合基准点72赋值给(81)完成一次循环} 一轮数据 29 6 57 12 42 34 72 81 83 {基准点的最终位置确定} 其过程图如下: 其算法实现找到基准点位置需要定义lohi private int partition(int sortArray[],int low,int hight){/*** key 值为基准点的值 */int key sortArray[low];while(lowhight){/*** 从后半部分开始扫描大于key的hi直接-1如果小于key则把该元素赋值给array[lo];*/while(lowhight sortArray[hight]key)hight--;sortArray[low] sortArray[hight];/*** 从前半部分扫描小于key的lo直接1如果大于key则把该元素赋值给array[hi];*/while(lowhight sortArray[low]key)low;sortArray[hight] sortArray[low];}/*** 然后lo hi重合时结束把key赋值给array[lo]即可*/sortArray[low] key;return low;} 到此找到基准点的最终位置然后以基准点现在位置分为左右两部分在循环上面的操作 public void sort4(int[] data,int low,int hight){if(lowhight){int result partition(data,low,hight);sort4(data,low,result-1);sort4(data,result1,hight);}} 转载于:https://www.cnblogs.com/galibujianbusana/p/6536725.html