基本排序算法
2016-05-17 17:22
148 查看
对10000个完全无序的随即数据排序表明,效率上:插入排序>选择排序>冒泡排序,效率差为2.3倍和1.75倍,即插入排序是冒泡排序的4.3倍。
插入排序:
public int[] insertSort(int[] data) {
for(int i=1,j;i<data.length;i++){
int tmp = data[i];
for(j=i;j>0&&tmp<data[j-1];j--){
data[j]=data[j-1];
}
data[j]=tmp;
}
return data;
}
选择排序:
public int[] selectionSort(int[] data){
for(int i=0;i<data.length-1;i++){
int least=i;
for(int j=i+1;j<data.length;j++){
if(data[j]<data[least])
least=j;
}
if(i!=least){
int tmp=data[least];
data[least]=data[i];
data[i]=tmp;
}
}
return data;
}
冒泡排序:
public int[] bubbleSort(int[] data) {
int n=data.length;
for(int i=0;i<n-1;i++)
for(int j=n-1;j>i;j--)
if(data[j]<data[j-1]){
int tmp=data[j];
data[j]=data[j-1];
data[j-1]=tmp;
}
return data;
}
插入排序:
public int[] insertSort(int[] data) {
for(int i=1,j;i<data.length;i++){
int tmp = data[i];
for(j=i;j>0&&tmp<data[j-1];j--){
data[j]=data[j-1];
}
data[j]=tmp;
}
return data;
}
选择排序:
public int[] selectionSort(int[] data){
for(int i=0;i<data.length-1;i++){
int least=i;
for(int j=i+1;j<data.length;j++){
if(data[j]<data[least])
least=j;
}
if(i!=least){
int tmp=data[least];
data[least]=data[i];
data[i]=tmp;
}
}
return data;
}
冒泡排序:
public int[] bubbleSort(int[] data) {
int n=data.length;
for(int i=0;i<n-1;i++)
for(int j=n-1;j>i;j--)
if(data[j]<data[j-1]){
int tmp=data[j];
data[j]=data[j-1];
data[j-1]=tmp;
}
return data;
}
相关文章推荐
- 二叉树遍历非递归
- iOS之导航栏的设置与UITabBarController的属性设置
- struts2接收参数的3种方法
- Java中普通代码块,构造代码块,静态代码块区别及代码示例
- ubuntu 下vim修改tab键为4个空格
- Scrum 项目4.0
- 机器学习 —— 概率图模型(Homework: Structure Learning)
- 理解多线程
- intellij idea 搭建scala环境和一些问题
- Football
- iOS8 屏幕横竖屏分析
- asp.net TreeView的选中CheckBox触发事件(父对象选中子对象全选)
- 进程字典与ets
- 2016-百度之星-资格赛-Problem C【字典树】
- Unreal Cook Book:动态改变材质的颜色等参数
- 高效排序算法(希尔排序)
- 高效排序算法(快排序)
- 零编程开发管理软件,提高效率,缩短开发周期
- php+nginx搭建
- 朴素贝叶斯分类