冒泡排序、快速排序 java代码实现
生活随笔
收集整理的這篇文章主要介紹了
冒泡排序、快速排序 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代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sparksql自定义函数
- 下一篇: 机器学习资源锦集