设为首页 收藏本站
查看: 668|回复: 0

冒泡排序,选择排序,插入排序,希尔(Shell)排序 Java的实现

[复制链接]

尚未签到

发表于 2017-5-16 08:49:32 | 显示全部楼层 |阅读模式
public class SortAll
{

/**
* 冒泡排序,选择排序,插入排序,希尔(Shell)排序 Java的实现 2008.11.09
*
* @author YangL. (http://www.idcn.org)
*/
public static void main(String[] args)
{
int[] i =
{
1, 12, 4, 118, 3, 2
};
long a = System.currentTimeMillis();
System.out.println("----冒泡排序的结果:");
maoPao(i);
System.out.println("----排序的时间:" + (System.currentTimeMillis() - a));
System.out.println();
a = System.currentTimeMillis();
System.out.println("----选择排序的结果:");
xuanZe(i);
System.out.println("----排序的时间:" + (System.currentTimeMillis() - a));
System.out.println();
a = System.currentTimeMillis();
System.out.println("----插入排序的结果:");
chaRu(i);
System.out.println("----排序的时间:" + (System.currentTimeMillis() - a));
System.out.println();
a = System.currentTimeMillis();
System.out.println("----希尔(Shell)排序的结果:");
shell(i);
System.out.println("----排序的时间:" + (System.currentTimeMillis() - a));
}

public static void print(int[] x)
{
for (int m : x)
{
System.out.print(m + " ");
}
System.out.println("");
}

// 冒泡排序
public static void maoPao(int[] x)
{
for (int i = 0; i < x.length; i++)
{
for (int j = i + 1; j < x.length; j++)
{
if (x > x[j])
{
int temp = x;
x = x[j];
x[j] = temp;
}
print(x);
}
}
for (int i : x)
{
System.out.print(i + " ");
}
}

// 选择排序
public static void xuanZe(int[] x)
{
for (int i = 0; i < x.length; i++)
{
int lowerIndex = i;
// 找出最小的一个索引
for (int j = i + 1; j < x.length; j++)
{
if (x[j] < x[lowerIndex])
{
lowerIndex = j;
}
}
// 交换
int temp = x;
x = x[lowerIndex];
x[lowerIndex] = temp;
print(x);
}
for (int i : x)
{
System.out.print(i + " ");
}
}

// 插入排序
public static void chaRu(int[] x)
{
for (int i = 1; i < x.length; i++)
{// i从一开始,因为第一个数已经是排好序的啦
for (int j = i; j > 0; j--)
{
if (x[j] < x[j - 1])
{
int temp = x[j];
x[j] = x[j - 1];
x[j - 1] = temp;
}
print(x);
}
}
for (int i : x)
{
System.out.print(i + " ");
}
}

// 希尔排序
public static void shell(int[] x)
{
// 分组
for (int increment = x.length / 2; increment > 0; increment /= 2)
{
// 每个组内排序
for (int i = increment; i < x.length; i++)
{
int temp = x;
int j = 0;
for (j = i; j >= increment; j -= increment)
{
if (temp < x[j - increment])
{
x[j] = x[j - increment];
}
else
{
break;
}
}
x[j] = temp;
}
}

for (int i : x)
{
System.out.print(i + " ");
}
}
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-377896-1-1.html 上篇帖子: shell获取目录下最新的文件,文件是以日期命名 下篇帖子: shell 遍历目录文件并根据文件名和日期匹配度删除文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表