Java实现的简单排序(冒泡排序,选择排序和插入排序)

无论是在面试或者是工作中,我们都多多少少会遇到关于排序算法。而且排序算法也确实很重要!

本文只是实现简单的几个排序算法。

1.冒泡排序

/**
* 冒泡排序
*/
public void bubbleSort1(){
int out,in;
//out表示外层循环的趟数,nElems表示数组元素的个数
for(out=0;out<nElems-1;out++){
//比较次数
for(in=nElems-1;in>out;in--){
if(a[in]>a[in+1]){
//交换两个元素
swap(in,in+1);
}
}
}

     }

//调换两个元素的位置
private void swap(int one,int two){
long temp=a[one];
a[one]=a[two];
a[two]=temp;
}

时间复杂度为O(N*N)。虽然效率不高,但属于经典算法。

2.选择排序

                /**
* 选择排序,每一趟中找出最小的往前放
*/

public void selectSort(){
int out,in,min;

                        //out表示外层循环的趟数,nElems表示数组元素的个数
for(out=0;out<nElems-1;out++){
min=out;
for(in=out+1;in<nElems;in++){
if(a[in]<a[min]){
min=in;
}
swap(min,out);
}
}
}

 //调换两个元素的位置
private void swap(int one,int two){
long temp=a[one];
a[one]=a[two];
a[two]=temp;
}

相比冒泡排序效率有所提高,时间复杂度依然为O(N*N),和冒泡排序的区别是减少了元素交换的次数。

3.插入排序

/**
* 插入排序
*/
public void insertSort(){
int in,out;
//从第二个元素开始向后遍历
for(out=1;out<nElems;out++){
//将要插入的元素放入temp中,把a[out]为插入的元素的位置
long temp=a[out];
in=out;

                               //与a[out]前面的元素比较并排序
while(in>0 && a[in-1]>=temp){
a[in]=a[in-1];
--in;
}
//将temp放入合适的位置
a[in]=temp;
}
}

这个算法对于随机数据,比冒泡排序快了一倍,比选择排序略快。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值