日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

冒泡排序、快速排序 java代码实现

發布時間:2024/8/23 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 冒泡排序、快速排序 java代码实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 冒泡排序
    • 源碼實現
    • 單元測試
    • 優化
  • 快速排序
    • 源碼實現
    • 單元測試

冒泡排序

源碼實現

package csdn.dreamzuora.sort;import java.util.List;/*** Title: 冒泡排序* Description:* 冒泡排序思想是把相鄰的元素進行兩兩比較,當前面元素大于后面元素則進行交換* @version 1.0* @author: weijie* @date: 2020/10/22 17:50*/ public class BubbleSort extends Sort<Integer>{@Overridepublic void sort(List<Integer> array) {if (array == null || array.isEmpty()){return;}int size = array.size();for (int i = 0; i < size - 1; i++){for (int j = 0; j < size - 1; j++){if (array.get(j) > array.get(j + 1)){int temp = array.get(j + 1);array.set(j + 1, array.get(j));array.set(j, temp);}}}} }

單元測試

package csdn.dreamzuora.sort;import com.sun.deploy.util.StringUtils; import org.junit.Test; import org.junit.jupiter.api.Assertions;import java.util.ArrayList; import java.util.Arrays; import java.util.List;import static org.junit.Assert.*;/*** Title:* Description:** @version 1.0* @author: weijie* @date: 2020/10/22 18:33*/ public class BubbleSortTest {BubbleSort bubbleSort = new BubbleSort();@Testpublic void sort() {List<Integer> sortList = Arrays.asList(3, 5, 4, 0, 1);List<Integer> expectList = Arrays.asList(0, 1, 3, 4, 5);bubbleSort.sort(sortList);Assertions.assertEquals(expectList, sortList);} }

優化

package csdn.dreamzuora.sort;import java.util.List;/*** Title: 冒泡排序優化* Description:* 優化:在外層循環處,設置標志isSort,默認為排好,如果不交換則跳出本次循環* @version 1.0* @author: weijie* @date: 2020/10/22 18:50*/ public class BubbleSortPlus extends Sort<Integer>{@Overridepublic void sort(List<Integer> array) {if (array == null || array.isEmpty()){return;}int size = array.size();for (int i = 0; i < size - 1; i++){boolean isSort = true;for (int j = 0; j < size - 1; j++){if (array.get(j) > array.get(j + 1)){isSort = false;int temp = array.get(j + 1);array.set(j + 1, array.get(j));array.set(j, temp);}}if (isSort){break;}}} }

快速排序

源碼實現

package csdn.dreamzuora.sort;import java.util.List;/*** Title: 快速排序* Description:* 快速排序每一輪找出一個標準值,大于該值的放在右邊,小于該值放在左邊,從而把數組拆分成兩部分,這種思路叫做分治法** @version 1.0* @author: weijie* @date: 2020/10/22 17:50*/ public class QuickSort extends Sort<Integer> {/**** @param a 數組* @param left 頭指針* @param right 尾指針*/@Overridepublic void sort(List<Integer> a, int left, int right) {if (left >= right){return;}int value = a.get(left);//用來控制分治頭指針、尾指針int i = left;int j = right;while (left < right){//先移動尾指針while (right != left && a.get(right) >= value){right --;}//再移動頭指針while (left != right && a.get(left) <= value){left ++;}//如果指針重合,則確定了value下標,進行交換if (left == right){a.set(i, a.get(left));a.set(left, value);//分治sort(a, i, left - 1);sort(a, left + 1, j);}//如果指針沒有重合則進行交換頭尾指針值else {int temp = a.get(left);a.set(left, a.get(right));a.set(right, temp);}}}/*** 單邊循環法:以后再研究* @param array*/public void sort2(List<Integer> array){} }

單元測試

package csdn.dreamzuora.sort;import org.junit.Test;import java.util.Arrays; import java.util.List;import static org.junit.Assert.*;/*** Title:* Description:** @version 1.0* @author: weijie* @date: 2020/10/23 18:18*/ public class QuickSortTest {QuickSort quickSort = new QuickSort();@Testpublic void sort() {List<Integer> list = Arrays.asList(5, 8, 6, 3, 9, 2, 1, 7);quickSort.sort(list, 0, list.size() - 1);System.out.println(list);} }

總結

以上是生活随笔為你收集整理的冒泡排序、快速排序 java代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。