public class SelectionSort {

	private static void selectSortTest() {
int[] sortArray = { 5, 2, 4, 1, 3 };
System.out.print("选择排序前: ");
Utils.printArray(sortArray);
selectSort(sortArray);
System.out.print("选择排序后: ");
Utils.printArray(sortArray);
} public static void selectSort(int[] sort) {
int temp;
for (int i = 0; i < sort.length - 1; i++) {
for (int j = i + 1; j < sort.length; j++) {
if (sort[i] > sort[j]) {
temp = sort[i];
sort[i] = sort[j];
sort[j] = temp;
}
}
}
} public static void heapSortTest(){
int[] arr = { 5, 2, 4, 1, 3 };
Utils.printArray("堆排序前:",arr);
heapSort(arr);
Utils.printArray("堆排序后:",arr);
} public static void heapSort(int[] arr) {
int arrLen = arr.length;
int temp = 0; //建立堆
for (int i = (arrLen-1) / 2; i >= 0; i--)
adjustHeap(arr, i, arrLen); //调整堆
for (int i = arrLen - 2; i >= 0; i--) {
temp = arr[i + 1];
arr[i + 1] = arr[0];
arr[0] = temp;
adjustHeap(arr, 0, i + 1); // Utils.printArray("第"+(9-i)+"次调整:",arr);
}
} public static void adjustHeap(int[] arr, int ri, int n) {
int temp = arr[ri];
int ci = 2 * ri + 1;
while (ci <= n - 1) {
if (ci < n - 1 && arr[ci] < arr[ci + 1])
ci++; if (temp >= arr[ci])
break;
arr[(ci - 1) / 2] = arr[ci];
ci = 2 * ci + 1;
}
arr[(ci - 1) / 2] = temp;
} public static void main(String [] args){
selectSortTest();
heapSortTest();
}
}

  

java排序算法-选择排序的更多相关文章

  1. 排序算法--选择排序(Selection Sort)_C#程序实现

    排序算法--选择排序(Selection Sort)_C#程序实现 排序(Sort)是计算机程序设计中的一种重要操作,也是日常生活中经常遇到的问题.例如,字典中的单词是以字母的顺序排列,否则,使用起来 ...

  2. 数据结构和算法(Golang实现)(20)排序算法-选择排序

    选择排序 选择排序,一般我们指的是简单选择排序,也可以叫直接选择排序,它不像冒泡排序一样相邻地交换元素,而是通过选择最小的元素,每轮迭代只需交换一次.虽然交换次数比冒泡少很多,但效率和冒泡排序一样的糟 ...

  3. 使用 js 实现十大排序算法: 选择排序

    使用 js 实现十大排序算法: 选择排序 选择排序 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!

  4. 基本排序算法——选择排序java实现

    选择排序与冒泡排序有很大的相同点,都是一次遍历结束后能确定一个元素的最终位置,其主要思路是,一次遍历选取最小的元素与第一个元素交换,从而使得一个个元素有序,而后选择第二小的元素与第二个元素交换,知道, ...

  5. 排序算法-选择排序(Java)

    package com.rao.linkList; import java.util.Arrays; /** * @author Srao * @className SelectSort * @dat ...

  6. 排序算法 - 选择排序(selection sort)

    选择排序(Selection sort)跟插入排序一样,也是O(n^2)的复杂度,这个排序方式也可以用我们的扑克牌来解释. 概念 桌面上有一堆牌,也是杂乱无章的,现在我们想将牌由小到大排序,如果使用选 ...

  7. 排序算法——选择排序(js语言实现)

    选择排序:顾名思义选择,选择排序属于O(N^2)的排序算法,意思就是选择数组中的最小的拿出来放在第一位,然后再剩下的数里面,选择最小的,排在第二位,以此类推. 例如:8  3  4  5  6  2  ...

  8. javascript排序算法-选择排序

    选择排序 概念:选择排序大致的思路是找到数据结构中的最小值并将其放置在第一位,接着找到第二小的值并将其放在第二位,以此类推. 复杂度: O(n^2) 代码实现 var swap = function ...

  9. Python排序算法——选择排序

    有趣的事,Python永远不会缺席! 如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10787340.html 一.选择排序(Sele ...

随机推荐

  1. HUD2087

    #include<iostream> #include<cstdio> #include<cstring> #define maxn 1010 using name ...

  2. jQuery中在当前页面弹出一个新的界面

    W.$.dialog({ content:'url:wswgrkbillController.do?snh&id='+b+'&bh='+c+'&ck='+d+'&sl= ...

  3. tinkphp URL重写,支持伪静态

    通常的URL里面含有index.php,为了达到更好的SEO效果可能需要去掉URL里面的index.php ,通过URL重写的方式可以达到这种效果,通常需要服务器开启URL_REWRITE模块才能支持 ...

  4. linux书籍推荐(转)

    ref: http://www.cnblogs.com/jiangjh/archive/2011/06/27/2091164.html#commentform 入门篇 <LINUX权威指南> ...

  5. JSON.parse和JSON.stringify 参数详解

    JSON.parse和JSON.stringify这两个浏览器自带(IE6/7除外)的方法平常我们经常用到,但是一般都只是用到了他们的第一个参数,比如字符串转对象:JSON.parse('{}')   ...

  6. 你好,C++(39)6.4.4 依葫芦画瓢:用C++表达设计结果(下)

    6.4.4  依葫芦画瓢:用C++表达设计结果 完成上面的分析与设计之后,小陈感觉已经成竹在胸胜利在望了.他知道,只要完成了程序中的类以及类之间关系的分析和设计,整个程序就相当于已经完成了一大半.接下 ...

  7. C++ Primer 5th 第12章 动态内存

    练习12.1:在此代码的结尾,b1 和 b2 各包含多少个元素? StrBlob b1; { StrBlob b2 = {"a", "an", "th ...

  8. underscorejs-every学习

    2.10 every 2.10.1 语法: _.every(list, predicate, [context]) 2.10.2 说明: 对list集合的每个成员根据predicate进行真值检测,如 ...

  9. 初涉JavaScript模式 (10) : 函数 【进阶用法】

    写在前面 不知不觉写到第10篇了.这篇写起来很忐忑,终于和高级搭上边了(呵呵),这篇我们 主要 说一下 JS 方法的部分高级用法(我知道的),笔者水平有限,难免有错.废话不多少,进入正文. 初始化 我 ...

  10. yum 搭建lnmp环境详细步骤

    1.关闭防火墙[root@CentOS ~]# chkconfig iptables off 2.关闭selinuxvi /etc/sysconfig/selinux//将SELINUX=enforc ...