博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
几种排序写法
阅读量:4316 次
发布时间:2019-06-06

本文共 2580 字,大约阅读时间需要 8 分钟。

  参考链接: 

  github 有个项目,利用 java 实现了各种算法,下面是几种排序写法

 

/**     * 冒泡排序,排序后为升序     */    public static 
> void bubbleSort(T[] array) { int lastIndex = array.length - 1; boolean swap; do { swap = false; for(int i=0; i
0) { T temp = array[i]; array[i] = array[i+1]; array[i+1] = temp; swap = true; } } lastIndex--; }while(swap); } /* * 插入排序,排序后为升序 */ public static
> void insertSort(T[] arr) { T key; int last = arr.length; for (int i = 1; i < last; i++) { key = arr[i]; int j = i - 1; while (j >= 0 && key.compareTo(arr[j]) < 0) { arr[j + 1] = arr[j]; j--; } arr[j+1] = key; } } /* * 合并排序, 升序 */ public static
> void mergeSort(T[] arr, T[] temp, int left, int right) { if (left < right) { int mid = left + (right - left) / 2; mergeSort(arr, temp, left, mid); mergeSort(arr, temp, mid + 1, right); merge(arr, temp, left, mid, right); } } public static
> void merge(T[] arr, T[] temp, int left, int mid, int right) { for (int i = left; i <= right; i++) { temp[i] = arr[i]; } int i = left; int j = mid + 1; int k = left; while (i <= mid && j <= right) { if (temp[i].compareTo(temp[j]) <= 0) { arr[k] = temp[i]; i++; } else { arr[k] = temp[j]; j++; } k++; } while (i <= mid) { arr[k] = temp[i]; i++; k++; } } /* * 快速排序 */ public static
> void quickSort(T[] arr, int start, int end) { if (start < end) { int pIndex = partition(arr, start, end); quickSort(arr, start, pIndex - 1); quickSort(arr, pIndex + 1, end); } } /* * 分割 */ public static
> int partition(T[] arr, int start, int end) { T pivot = arr[end]; int PIndex = start; for (int i = start; i < end; i++) { if (arr[i].compareTo(pivot) <= 0) { swap(arr, i, PIndex); PIndex++; } } swap(arr, PIndex, end); return PIndex; } /* * 交换数组中的两个元素 */ public static
> void swap(T[] arr, int initial, int fin) { T temp = arr[initial]; arr[initial] = arr[fin]; arr[fin] = temp; }

 

转载于:https://www.cnblogs.com/mexding/p/8385945.html

你可能感兴趣的文章
数据结构——树——二叉查找树
查看>>
StringBuilder動態串
查看>>
系列文章(二):从WLAN的安全威胁,解析电信诈骗的技术症结——By Me
查看>>
内部类演示
查看>>
多态/接口
查看>>
简单的proxy之TinyHTTPProxy.py
查看>>
正式开张
查看>>
java中的注解
查看>>
日期选择组件(DatePicker)的实现
查看>>
Java 求字符串中出现频率最高字符
查看>>
ARM Cortex-M3 异常优先级以及CMSIS RTOS RTX的中断优先级
查看>>
CodeFirst-Section1之小例子
查看>>
Scikit-learn的kmeans聚类
查看>>
MySQL基础(创建库,创建表,添加数据)
查看>>
git 提交丢失Warning, you are leaving 2 commits behind,
查看>>
3、使用SWFUpload使异异步上传文件
查看>>
HDOJ 2136 Largest prime factor
查看>>
Recommended add-ons/plugins for Microsoft Visual Studio [closed]
查看>>
怎么使用 ab.exe 测试多个url。 how to use ab.exe test many url
查看>>
U3D协程Coroutine之WWW与Update()的并行测试
查看>>