个人对于冒泡排序和选择排序的理解
2017-10-25 11:19
260 查看
1.冒泡排序:它的实现原理节省了时间,
实现原理:一组数两两进行比较,然后把最大数放在后边,这样每次循环结束都会少一次比较,
/*
* 冒泡排序
*/
public class C {
public static void main(String[] args) {
int[] arr = { 6, 3, 8, 2, 9, 1 };
for (int i = 0; i < arr.length - 1; i++) {// 外层循环控制排序趟数
for (int j = 0; j < arr.length - 1 - i; j++) {// 内层循环控制每一趟排序多少次
System.out.println(i+"===="+j);
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]+"");
}
}
}
n个数的话会进行(n-1)次的排序,每个数要跟其它数比较(n-1)次。
2.选择排序:
实现原理:把最小的数找出来,
public class B {
public static void main(String[] args) {
int [] a= {1,6,23,9,14,56};
select(a);
print(a);
}
private static void print(int[] a) {
for(int i=0;i<a.length;i++) {
System.out.println(a[i]+"");
}
System.out.println();
}
private static void select(int[] a) {
for(int i=0;i<a.length;i++) {
for(int j=i+1;j<a.length;j++) {
System.out.println(i+"---"+j);
if(a[j]<a[i]) {
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}
}
它的比较方式是第一个数与第二个数进行比较,比它小就把它放前边再拿放到前边的数与后边的数进行比较,比较一轮后,下一个数也是这样比较。
实现原理:一组数两两进行比较,然后把最大数放在后边,这样每次循环结束都会少一次比较,
/*
* 冒泡排序
*/
public class C {
public static void main(String[] args) {
int[] arr = { 6, 3, 8, 2, 9, 1 };
for (int i = 0; i < arr.length - 1; i++) {// 外层循环控制排序趟数
for (int j = 0; j < arr.length - 1 - i; j++) {// 内层循环控制每一趟排序多少次
System.out.println(i+"===="+j);
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]+"");
}
}
}
n个数的话会进行(n-1)次的排序,每个数要跟其它数比较(n-1)次。
2.选择排序:
实现原理:把最小的数找出来,
public class B {
public static void main(String[] args) {
int [] a= {1,6,23,9,14,56};
select(a);
print(a);
}
private static void print(int[] a) {
for(int i=0;i<a.length;i++) {
System.out.println(a[i]+"");
}
System.out.println();
}
private static void select(int[] a) {
for(int i=0;i<a.length;i++) {
for(int j=i+1;j<a.length;j++) {
System.out.println(i+"---"+j);
if(a[j]<a[i]) {
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}
}
它的比较方式是第一个数与第二个数进行比较,比它小就把它放前边再拿放到前边的数与后边的数进行比较,比较一轮后,下一个数也是这样比较。
相关文章推荐
- 一直分不清选择排序和冒泡排序,网上也好多都是模棱两可的,按自己的理解,总结了个小demo以作记录,希望批评指正
- 插入排序、选择排序,冒泡排序、归并排序——(个人笔记)
- 冒泡排序,选择排序的理解及代码实…
- 黑马程序员---冒泡排序和选择排序的理解
- 冒泡排序、选择排序、插入排序,效率以及应用场景
- IOS- 快速排序,冒泡排序,直接插入排序和折半插入排序,希尔排序,堆排序,直接选择排序
- java的选择排序和冒泡排序程序
- 对于IO流的个人理解
- java版排序算法简介及冒泡排序以及优化,选择排序,直接插入排序,希尔排序,堆排序,快速排序及其优化前言 2 分类 2 稳定性 3 时间复杂度 4 Java实现版本 5 1、冒泡排序 6 2、选择排序
- 冒泡排序(及其进阶——鸡尾酒排序)与选择排序的算法思想及具体事例
- C#实现的3种排序算法--冒泡排序、选择排序、插入排序
- 数据结构只选择排序、冒泡排序、插入排序
- 冒泡排序和选择排序的根本差别在哪里?
- 个人对于项目成功失败的理解
- C#的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序
- [java]排序分类--及选择排序、插入排序、冒泡排序、快速排序的解释图和代码
- java 选择排序和冒泡排序
- c语言中冒泡排序、插入排序、选择排序算法比较
- 黑马程序员----Java中几种常用排序算法(选择排序、冒泡排序、快速排序)
- Java 中数组的冒泡排序 和 直接选择排序