java冒泡排序、选择排序、插入排序算法的核心思想及其比较
来源:互联网 发布:淘宝店音乐怎么设置 编辑:程序博客网 时间:2024/05/18 00:56
上代码:
package arithmetic;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class Bubble_Arithmetic {
//冒泡排序的核心思想:若有n个数据排序,从第0个数据开始,依次比较第0个数据与第一个数据,若第0个大于第一个则交换两者的位置,若小于或等于第一个,不交换,接
//着比较第一个与第二个数据,依此类推,直至所有的数据从前到后是按照以小到大的顺序排列的。——完毕。
public static List bubble(List<Integer> list){
int temp=0;
for (int i = list.size()-1; i >=0; i--) {
for (int j = 0; j < i; j++) {
if(list.get(j)>list.get(j+1)){
temp=list.get(j);
list.set(j, list.get(j+1));
list.set(j+1, temp);
}
}
}
return list;
}
冒泡排序的效率:O(N*N),比较N*N/2,交换N*N/4;
//选择排序核心思想:有n个数据,第0个数据标记为min,用out来标记左边未排序的数据使用in标记未排序的第一个数据,依次与min比较,如果比min小,则将该数据标记
//为min,当第一轮比较完后,最终的min与out标记数据交换,依次类推。
public static List SelectSort(List<Integer> list){
int min,in,out,temp;
for (out = 0; out < list.size()-1; out++) {
min=out;
for (in = out+1; in < list.size(); in++) {
if(list.get(in)<list.get(min)){
min=in;
}
}
temp=list.get(out);
list.set(out, list.get(min));
list.set(min, temp);
}
return list;
}
选择排序的效率:O(N*N),比较N*N/2,交换<N;与冒泡相比,比较次数没有明显改变,但交换次数明显减少许多。
//插入排序核心思想:部分数据有序的情况下,使用out标记第一个无序的数据,将其提取保存到一个中间temp中,使用in标记空位置,依次比较temp中的值与in-1的值,若in值大于temp的值,则后移,直到遇到第一个比temp小的值,在其下一个位置插入;
public static List InsertionSort(List<Integer> list){
List<Integer> resultList= new ArrayList<Integer>(list.size());
int[]result=new int[list.size()];
int in,out;
for (out = 0; out < list.size(); out++) {
int temp= list.get(out);
in=out;
while(in >0 && list.get(in-1)>temp){
result[in]= list.get(in-1);
--in;
}
result[in]=temp;
}
for (int i = 0; i < result.length; i++)
{
System.out.print(result[i]);
System.out.print(" ");
}
System.out.println("size:"+result.length );
return resultList;
}
插入排序的效率:O(N*N),比较N*N/4,复制N*N/4;插入排序在随机数的情况下比冒泡快一倍,比选择稍快;在基本有序的数字中,插入几乎只需O(N);在逆序的情
//况下,不必冒泡快。
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入你想排序的整数,以分号;分隔:结束:回车");
List<String> list=new ArrayList<String>();
do{
String line=scanner.nextLine();
if(line.isEmpty()){
break;
}
list.addAll(Arrays.asList(line.split(";")));
}while(true);
List<Integer> list_Int=new ArrayList<Integer>();
for (String string : list) {
list_Int.add(Integer.parseInt(string.trim()));
}
list_Int=bubble(list_Int);
for (Integer integer : list_Int) {
System.out.print(integer);
System.out.print(" ");
}
}
}
- java冒泡排序、选择排序、插入排序算法的核心思想及其比较
- #.java实现排序算法:插入排序、选择排序、冒泡排序
- java排序算法:冒泡排序、选择排序、插入排序
- 三种初级排序算法(冒泡、选择、直接插入)java实现及其性能比较
- 冒泡排序、插入排序、选择排序、希尔排序、堆排序、归并排序等常用排序算法的比较
- 冒泡排序、插入排序、选择排序、希尔排序、堆排序、归并排序等常用排序算法的比较
- Java实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序等
- 6种排序算法及其比较 简单选择排序,堆排序,简单插入排序,希尔排序,冒泡排序,快速排序,归并排序
- 冒泡排序、选择排序、插入排序的比较
- 冒泡排序,选择排序,插入排序的比较
- 冒泡排序、插入排序、选择排序的原理及比较
- 插入排序、冒泡排序、选择排序、快速排序、堆排序、归并排序算法比较
- java数组的排序,选择排序,冒泡排序,插入排序
- 【算法】插入排序/冒泡排序/选择排序
- 《算法》选择排序、插入排序、冒泡排序
- 选择,插入,交换,冒泡,希尔排序算法的效率比较
- 选择 插入 快速 冒泡排序算法的比较
- 基本排序算法(冒泡、选择、插入)的效率比较
- 经典排序之选择排序
- python最常用函数
- 返回值为类名的虚函数 覆盖
- 基本数据结构之线性表-顺序表
- SharedPreferences介绍:
- java冒泡排序、选择排序、插入排序算法的核心思想及其比较
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- (step5.1.5)hdu 1856(More is better——DFS)
- poj 2888 Magic Bracelet 置换(Burnside引理)+矩阵
- Windows 下单机最大TCP连接数
- <<黑马程序员>>java基础之泛型
- dom4j中xpath的使用
- MFC可编辑CListCtrl
- Sobel edge detection