冒泡排序的原理
来源:互联网 发布:怎么网络推广 编辑:程序博客网 时间:2024/04/30 12:24
package com.zheban.test;
/**
* 数组升序
* @author King
*
*/
public class Test1 {
public static void main(String[] args) {
int[] arr1 = new int[] { 1, 3, 5, 7, 0, 45, 32 };
// 排序前的数组打印
print(arr1);
// 冒泡排序
sort02(arr1);
// 排序后的数组打印
print(arr1);
}
/**
* 打印功能 返回值:无 参数列表:arr1[];
*
*/
static void print(int[] arr1) {
System.out.print("[");
for (int i = 0; i < arr1.length; i++) {
if (i != arr1.length- 1)
System.out.print(arr1[i] + ",");
else
System.out.println(arr1[i] + "]");
}
}
/**
* 排序方式:冒泡排序:冒泡排序i没有参与比较,只起控制轮数的作用;
* <p>
*
* 设len = (length-1);防止数组越界;
* (因为在下列代码中有,arr[j]和arr[j+1]作比较,j+1会提前到达长度值,减一刚好不会越界) 思想:
* (冒泡比较是每一轮:下标0和1,1和2,2和3,3和4.....做比较,因此,最大值永远在右边)内循环一次之后,最大值已经找到,已经排到最后;
* 因此第二轮比较的时候,最后一个数字不再进行参与,即在参与比较的长度中,长度(成员)已经减少一个,len-i;
* ;随着i的变大,进行比较的成员的长度便一轮一轮的减短
* </p>
*
* 返回值:没有 参数类型:int 型; 选择排序:第一次循环结束,最值在最左边;
*
* @param arr1
*
*/
static void sort02(int[] arr1) {
/**
* len = arr1.length-1;因为有j+1,所以不减1会数据越界
*/
int len = arr1.length- 1;// 用于内循环
for (int i = 1; i <= arr1.length; i++) {
// 俩俩比较,随着进行比较的轮数的增多,而比较的长度却在一个一个的减少
for (intj = 0; j < len - i; j++) {
if (arr1[j] > arr1[j + 1]) {
int temp = arr1[j];
arr1[j] = arr1[j + 1];
arr1[j + 1] = temp;
}
}
}
}
/**
* 排序方式:选择排序; 返回值:没有 参数类型:int 型; 选择排序:第一次循环结束,最值在最大左边;
*
* @param arr1
*/
static void sort01(int[] arr1) {
for (int i = 0; i < arr1.length; i++) {
for (int j = i + 1; j < arr1.length; j++) {
int temp = 0;
if (arr1[i] > arr1[j]) {
temp = arr1[i];
arr1[i] = arr1[j];
arr1[j] = temp;
}
}
}
}
}
/**
* 数组升序
* @author King
*
*/
public class Test1 {
public static void main(String[] args) {
int[] arr1 = new int[] { 1, 3, 5, 7, 0, 45, 32 };
// 排序前的数组打印
print(arr1);
// 冒泡排序
sort02(arr1);
// 排序后的数组打印
print(arr1);
}
/**
* 打印功能 返回值:无 参数列表:arr1[];
*
*/
static void print(int[] arr1) {
System.out.print("[");
for (int i = 0; i < arr1.length; i++) {
if (i != arr1.length- 1)
System.out.print(arr1[i] + ",");
else
System.out.println(arr1[i] + "]");
}
}
/**
* 排序方式:冒泡排序:冒泡排序i没有参与比较,只起控制轮数的作用;
* <p>
*
* 设len = (length-1);防止数组越界;
* (因为在下列代码中有,arr[j]和arr[j+1]作比较,j+1会提前到达长度值,减一刚好不会越界) 思想:
* (冒泡比较是每一轮:下标0和1,1和2,2和3,3和4.....做比较,因此,最大值永远在右边)内循环一次之后,最大值已经找到,已经排到最后;
* 因此第二轮比较的时候,最后一个数字不再进行参与,即在参与比较的长度中,长度(成员)已经减少一个,len-i;
* ;随着i的变大,进行比较的成员的长度便一轮一轮的减短
* </p>
*
* 返回值:没有 参数类型:int 型; 选择排序:第一次循环结束,最值在最左边;
*
* @param arr1
*
*/
static void sort02(int[] arr1) {
/**
* len = arr1.length-1;因为有j+1,所以不减1会数据越界
*/
int len = arr1.length- 1;// 用于内循环
for (int i = 1; i <= arr1.length; i++) {
// 俩俩比较,随着进行比较的轮数的增多,而比较的长度却在一个一个的减少
for (intj = 0; j < len - i; j++) {
if (arr1[j] > arr1[j + 1]) {
int temp = arr1[j];
arr1[j] = arr1[j + 1];
arr1[j + 1] = temp;
}
}
}
}
/**
* 排序方式:选择排序; 返回值:没有 参数类型:int 型; 选择排序:第一次循环结束,最值在最大左边;
*
* @param arr1
*/
static void sort01(int[] arr1) {
for (int i = 0; i < arr1.length; i++) {
for (int j = i + 1; j < arr1.length; j++) {
int temp = 0;
if (arr1[i] > arr1[j]) {
temp = arr1[i];
arr1[i] = arr1[j];
arr1[j] = temp;
}
}
}
}
}
阅读全文
0 0
- 冒泡排序的原理
- 冒泡排序的原理
- 冒泡排序和快速排序的原理
- 冒泡排序法的原理与举例
- 冒泡排序的原理及方法
- 完整的冒泡排序实现以及原理
- 冒泡排序的原理与实现
- 冒泡排序算法的原理与实现
- 冒泡排序、插入排序、选择排序的原理及比较
- 冒泡法排序原理
- 冒泡排序原理详解
- 冒泡排序原理解析
- php 冒泡排序原理
- 数组冒泡排序原理
- 冒泡排序原理
- 冒泡排序原理
- 算法--冒泡排序原理
- 冒泡排序原理以及算法
- JAVA集合入门
- C#中的Attribute详解
- weblogic.Deployer命令行参考配置说明
- 08 八进制和十六进制
- 【Linux】线程属性控制
- 冒泡排序的原理
- 新浪短网址API接口
- Java编程之反射中的注解详解
- Caused by: org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next token found char
- Use powershell config network
- SQLyog 激活 注册码
- ORCLE 查询一段时间(时间点不定,时差确定)内符合一定条件的数据
- Spring:IOC—控制反转(3)
- MFC自定义控件