冒泡排序、选择排序和插入
生活随笔
收集整理的這篇文章主要介紹了
冒泡排序、选择排序和插入
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
冒泡排序、選擇排序和插入排序代碼如下:
package cn.luxh.app.test;public class SimpleSortUtil {/*** 冒泡排序* 從小到大排序* 思路:* 1)第一趟排序進行了len-1次比較,數組中的最大值元素排到了最末端,位置已固定,該元素不再參與下趟比較* 2)第二趟排序進行了len-2次比較,因為只需要比較到第一個位置固定的元素(第一趟排序中的最大值元素)即可,數組中的第二大值元素位置也已固定,該元素不再參與下趟比較* 3)第三趟排序進行了len-3次比較,因為只需要比較到第一個位置固定的元素(第二趟排序中的最大值元素)即可,數組中的第三大值元素位置也已固定,該元素不再參與下趟比較* 4)依次類推...* * @param array* @return*/public static int[] bubbleSort(int[] array) {int out;//外層循環計數int in;//內層循環計數int len = array.length;//1)外層for循環計數器out從數組的最后開始,即out等于len-1,每經過一次循環,out減1(往左移);//2)下標大于out的元素都是已經排好序的了;//3)內層for循環計數器in從數組的最開始算起,即in=0,每完成一次內部循環加1,當in等于out時結束一次循環。//4)在內層循環中,比較in和in+1的兩個元素for(out=len-1;out>1;out--) {//下標大于out的元素都是已經排好序的,不用再處理。for(in=0;in<out;in++) {if(array[in]>array[in+1]) {//當前元素值比后面的元素值大,則交換兩個元素的位置int temp = array[in];array[in] = array[in+1];array[in+1] = temp;}}}return array;}/*** 選擇排序* 從小到大排序* 思路:* 1)第一趟比較時,找到最小的元素,然后這個最小元素和數組最左邊(下標為0)的元素交換位置,這個最小值不再參與下次比較* 2)第二趟比較時,從下標為1的元素開始,找到最小的元素,然后把這個最小值元素和下標為1的元素交換位置,這個最小元素不再參與下次比較* 3)依次類推...* @param array* @return*/public static int[] selectionSort(int[] array) {int min;//最小值下標int in;//內層循環計數int out;//外層循環計數int len = array.length;for(out=0;out<len-1;out++) {min = out;//最小值下標初始化for(in=out+1;in<len;in++) {//如果有元素比array[min]小,則把下標賦給minif(array[in]<array[min]) {min = in;}}//內層循環每結束一次,就把找到的最小元素和外層循環開始的元素交換int temp = array[out];array[out] = array[min];array[min] = temp;}return array;}/*** 插入排序* 從小到大* 在外層的for循環中,out計數器從1開始,向右移動,它標記了未排序部分的最左端的數據;* 在內層的while循環中,in計數器從out開始,向左移動,直到temp變量(標志位)的值小于in所指的數組值和in不能再向左移動為止* while循環的每一趟都向右移動了一個已排序的元素* * * @param array* @return*/public static int[] insertSort(int[] array) {int in;//內層循環計數int out;//外層循環計數int len = array.length;for(out=1;out<len;out++) {//移出標志位值int temp = array[out];in = out;while(in>0 && array[in-1] >=temp) {//大于標志位的值,則右移array[in] = array[in-1];in--;//左移計數器 }//插入標志為值array[in] = temp;}return array;}}測試:
package cn.luxh.app.test;import org.junit.Test;public class SimpleSortTester {@Testpublic void testSort() {int[] array = {6,45,35,23,78,34,26,67,38,90,345,2345,12,3568,80,100};//SimpleSortUtil.bubbleSort(array);//SimpleSortUtil.selectionSort(array); SimpleSortUtil.insertSort(array);displayArray(array);}public void displayArray(int[] array) {for(int a:array) {System.out.println(a);}}}轉載于:https://www.cnblogs.com/zhoushengbing/p/3199713.html
總結
以上是生活随笔為你收集整理的冒泡排序、选择排序和插入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自己的JS 监听器。用于选择文字
- 下一篇: Windows Azure 社区新闻综述