Bubble sort

冒泡排序 一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

冒泡排序算法的运作如下:

1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。

2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

3. 针对所有的元素重复以上的步骤,除了最后一个。

4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较

算法复杂度:

package Sort;

import java.util.Random;

public class BubbleSort {

public static void main(String[] args) {

int[] arr = new int[10];

Random rd = new Random();

for(int i=0;i

arr[i] = rd.nextInt(30);

}

output(arr);

bubble_sort(arr);

}

private static void bubble_sort(int[] arr) {

int temp;

for(int i=0;i

for(int j=0;j

if(arr[j]>arr[j+1]){

temp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = temp;

}

}

System.out.println(">>>>>>>>>>>");

output(arr);

}

System.out.println("<<<<<<<<<<<<<

output(arr);

}

private static void output(int[] arr) {

for(int i=0;i

System.out.print(arr[i]+" ");

}

System.out.println();

}

}

总而言之,经过一次冒泡会依次找到最大值、次大值、次次大值。。。

but

看到这里,读者可能会问在第七次排序结束之后,整个数组已经完全有序了,后面的排序不需要,这也正是这种算法的弊端,别急,下一个排序算法可以解决这个问题的

Cocktail shaker sort

鸡尾酒排序

区别于冒泡排序

此算法以双向进行排序,鸡尾酒排序等于是冒泡排序的轻微变形。不同的地方在于从低到高然后从高到低,而冒泡排序每次都是从低到高去比较序列里的每个元素。他可以得到比冒泡排序稍微好一点的效能,原因是冒泡排序只能从一个方向进行比对(由低到高),每次循环只移动一个项目

package Sort;

import java.util.Random;

/*** 鸡尾酒排序* */

public class Cocktailshakersort {

public static void main(String[] args) {

int[] arr = new int[10];

Random rd = new Random();

for(int i=0;i

arr[i] = rd.nextInt(30);

}

output(arr);

cocktail_sort(arr);

}

public static void cocktail_sort(int[] arr){

int left = 0, right = arr.length-1;

int tempb,tempa;

while(left

for(int i=left;i

if(arr[i]>arr[i+1]){

tempb = arr[i];

tempa = arr[i+1];

arr[i] = tempa;

arr[i+1] = tempb;

}

}

right--;

output(arr);

for(int i=right;i>left;i--){

if(arr[i-1]>arr[i]){

tempb = arr[i-1];

tempa = arr[i];

arr[i-1] = tempa;

arr[i] = tempb;

}

}

left++;

output(arr);

}

}

public static void output(int[] arr){

for(int i=0;i

System.out.print(arr[i]+" ");

}

System.out.println();

}

}

java的排序_java排序相关推荐

  1. java基础排序_Java排序算法-Java入门|Java基础课程

    1. 课程目标排序是任何语言都会使用到的功能之一,然成果排序的算法有很多,对空间的要求及其时间效率也不尽相同. 本文章以Java语言示例,通过对空间要求.时间效率要求,来对比各种排序算法的使用场景 2 ...

  2. java 比较算法_JAVA排序算法实现和比较:冒泡,桶,选择,快排,归并

    一.冒泡排序: 实现思想: 重复地走访过要排序的元素列,一次比较两个相邻的元素,如果他们的顺序(如从大到小.首字母从A到Z)错误就把他们交换过来.走访元素的工作是重复地进行直到没有相邻元素需要交换,也 ...

  3. java 正序排序_java排序之冒泡排序

    性能优化冒泡排序 1.举个例子:int[] array = {2,4,9,7,6,5}; 第一轮2和4进行比较,2<4,位置不变.再4和9进行比较,4<9,位置不变.再9和7进行比较,9& ...

  4. java 全排序_Java排序算法全

    Java排序算法代码 零. 排序基类 package com.yunche.sort; /** * @ClassName: BaseSort * @Description: * @author: yu ...

  5. java sort方法_Java排序方法sort用法详解

    本文实例为大家分享了java对数组.集合的排序方法,供大家参考,具体内容如下 对数组的排序: //对数组排序 public void arraySort(){ int[] arr = {1,4,6,3 ...

  6. java堆排序工具包_JAVA 排序工具类

    提供了以下排序:冒泡排序 选择排序 插入排序 希尔排序 快速排序 归并排序 桶排序 堆排序 package com.xingej.algorithm.sort;import java.util.Arr ...

  7. java 英文单词排序_java 排序单词

    package mypackage; public class Test { public static void main(String[] args) { WindowDocument win=n ...

  8. java排列序数_JAVA排序数字字母混合

    展开全部 import java.util.ArrayList; import java.util.List; public class Sort { /** * @param args */ pub ...

  9. java直接选择排序_Java排序大法-直接选择排序

    直接选择排序 原理:从数组中选择最大值 ,让最大值保存到最后 好处:效率比冒泡排序法要快 public class SortSelect { public static void main(Strin ...

最新文章

  1. 使用python愉快地做高数线代题目~
  2. Python中的*args和**kwargs是什么?该如何使用?
  3. LeetCode Linked List Cycle II
  4. tensorflow 进阶(四)---CNN
  5. 深度学习在其他领域的应用1:密码破解
  6. 华为5g鸿蒙折叠,华为5G折叠概念新机:麒麟9000+鸿蒙OS 这才是华为的实力
  7. android ratingbar星星显示
  8. Python实战从入门到精通第四讲——数据结构与算法2之实现一个优先级队列
  9. (转)mysql 无法设置外键的原因总结
  10. 报表中判断字段中是否包含某字符串
  11. Ponemon:优化SIEM时所面临的挑战
  12. 利用SQL语句查询数据库中具体某个字段的重复行
  13. python爬虫对比_Python六大框架对比,Web2py略胜一筹|python爬虫|python入门|python教程...
  14. 图片数据提取软件--GetData Graph Digitizer
  15. 将excel中的列转置成行
  16. 前端剑法第四式————御风
  17. PICO 开发者管理平台
  18. ORACLE 10 g的 merge into 用法
  19. nvcc: command not found
  20. 先学vba还是python-以Excel处理为目的学习python还是VBA?

热门文章

  1. MPI 集合通信函数 MPI_Reduce(),MPI_Allreduce(),MPI_Bcast(),MPI_Scatter(),MPI_Gather(),MPI_Allgather(),MPI_S
  2. C 中的static关键字
  3. cifar数据库及图像可视化
  4. 云炬金融每日一题20210906
  5. [省级大创项目]教育类APP的探索和实践——大学物理实验助手APP开发
  6. 科大星云诗社动态20210822
  7. 台湾大学林轩田机器学习技法课程学习笔记15 -- Matrix Factorization
  8. Sqlserver中查询存储过程是否包含某些文本
  9. bash脚本一条命令直接发送http请求
  10. C语言中巧妙的使用#和##