/**
* 排序方法整理
* @author zhyea
*
*/
public class Sort {
/**
* 冒泡排序,从小到大。
* 冒泡排序是比较相邻的两个元素,若顺序错误,则执行交换。循环走访序列直到不需要比较。稳定排序。
* @param arr
* 待排序的数组
*/
public static void bubbleSort(int[] arr){
int tmp = 0;
for(int k=0; k<arr.length; k++){
for(int i=1; i<arr.length; i++){
if(arr[i-1] > arr[i] ){
tmp = arr[i];
arr[i] = arr[i-1];
arr[i-1] = tmp;
}
}
}
} /**
* 选择排序,从小到大
* 每次从待排序序列中取出最大(或最小)的一个元素,放入已排好序的序列后面。不稳定排序。
* @param arr
* 待排序数组
*/
public static void selectSort(int[] arr){
int tmp = 0;
for(int k=0; k<arr.length; k++){
for(int i=k+1; i<arr.length; i++){
if(arr[i] < arr[k]){
tmp = arr[i];
arr[i] = arr[k];
arr[k] = tmp;
}
}
}
} /**
* 插入排序,从小到大
* 从待排序序列中取出一个,插入已排好序的序列的适当位置,如是重复。稳定排序。
* @param arr
* 待排序数组
*
*/
public static void insertSort(int[] arr){
int tmp = 0;
for(int k=1; k<arr.length; k++){
for(int i=k; i>0; i--){
if(arr[i]<arr[i-1]){
tmp = arr[i];
arr[i] = arr[i-1];
arr[i-1] = tmp;
}
}
}
} /**
* 快速排序,从小到大
* 通过一次排序,将待排序序列分成两部分,其中一部分中的值比另一部分都小;递归如上步骤,可完成排序。不稳定排序
* 可以通过减少交换优化快速排序,不列出了
* @param arr
*/
public static void quickSort(int[] arr, int low, int high){ int l = low;
int h = high; int tmp = 0;
int key = arr[0];
while(h>l){
while(h>l && arr[h]>=key){
h--;
}
if(h>l){
tmp = arr[l];
arr[l] = arr[h];
arr[h] = tmp;
l++;
}else{
break;
} while(h>l && arr[l]<=key){
l++;
}
if(h!=l){
tmp = arr[h];
arr[h] = arr[l];
arr[l] = tmp;
h--;
}else{
break;
}
} if(l>low)quickSort(arr, 0, h-1);
if(h<high)quickSort(arr, l+1, high);
} public static void main(String[] args){
int[] arr = {8, 5, 4, 6, 9, 7, 5, 6};
System.out.println("冒泡排序" );
bubbleSort(arr);
printArr(arr);
} /**
* 循序输出数组中的每个元素
* @param arr
* 待输出数组
*/
private static void printArr(int[] arr){
for(int i=0; i<arr.length; i++){
System.out.print(arr[i] + ", ");
}
System.out.print("\n");
}
}

最新文章

  1. 穷举、迭代、以及while代替for循环的使用
  2. C#之Action
  3. HttpWebRequest访问时,错误:(401)未经授权。
  4. 【Mood-17】 github中在本地进行上传的时候出现ERROR: Repository not found. fatal: The remote end hung up unexpectedly
  5. 02两栈共享空间_DoubleStack--(栈与队列)
  6. vector迭代器失效的一种情形
  7. Oracle Autonomous Transactions(自治事务)
  8. [转]URL的解析,C语言实现
  9. 框架基础:ajax设计方案(一)---集成核心请求
  10. One day one cf,Keep Wa away from me.
  11. CSS3动画中的animation-timing-function效果演示
  12. linux下各安装包的安装方法
  13. vue框架中的日期组件转换为yyy-mm-dd格式
  14. gdb fabs错误输出
  15. [UE4][Canvas]用C++代码绘制血条(HealthBar)
  16. C#基础知识回顾:2.使用DbProviderFactory实现多数据库访问
  17. 初次接触OSSEC
  18. delphi 文件查找
  19. maven学习--进阶篇
  20. 为某金融企业的IT技术部人员提供基于TFS的软件研发流程介绍

热门文章

  1. jQuery与Zepto
  2. 导出Excel功能的3种实现
  3. k8s更新Pod镜像
  4. mysql几种引擎和使用场景
  5. 【转】Spring中@Component的作用
  6. Tornado实战
  7. Django的模型层(2) - 多表操作(下)
  8. Dora.Interception, 为.NET Core度身打造的AOP框架:不一样的Interceptor定义方式
  9. Django-form进阶+详细版
  10. Node.js API学习笔记(二)