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. codevs1690开关灯

    #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #def ...

  2. C#关于使用枚举遇到的问题----Type运算符使用的必要性

    我定义了一个枚举AttributeName 然后写到下面代码: Enum .GetValues (AttributeName ): 毫无疑问的错了.别人说要加个Typeof 也就是Enum .GetV ...

  3. 关于AuthorizeAttribute使用

    在开发中,假如你只对一个角色进行权限处理,你可以这么写 class ActionAuthAttribute : AuthorizeAttribute { private RoleType _roleT ...

  4. 转:Android中的Selector的用法

    http://blog.csdn.net/shakespeare001/article/details/7788400

  5. css3中-webkit-text-size-adjust详解

    1.当样式表里font-size<12px时,中文版chrome浏览器里字体显示仍为12px,这时可以用 html{-webkit-text-size-adjust:none;} 2.-webk ...

  6. LINQ:使用Take和Skip实现分页

    随便找的,还没有试过代码. class Program { static int Main() { //每页大小 ; //页码 ; //源数据 string[] names = { "贤静& ...

  7. 【转载】ASP.NET线程安全与静态变量的生命周期浅谈

    ASP.NET线程安全所涉及的是什么呢?让我们先来看看静态变量的生命周期问题,下面是我理解的静态变量的生命周期: void Application_Start开始 void Application_E ...

  8. (转)Thinkphp系统常量 演示

    Thinkphp2.1框架内置了许多系统常量, 具体如下: __ROOT__ : 网站根目录地址 __APP__ : 当前项目(入口文件)地址 __URL__ : 当前模块地址 __ACTION__  ...

  9. JavaScript的“闭包”到底是什么(2)

    我的上篇博客标题不对,造成一些误解.我认为博客的宗旨不是背教科书,而是分享研发心得.我的上篇标题因该改成“JavaScript 闭包的一个议题:它对outer scope 的影响”,因为我没有严格地去 ...

  10. Firefox中Vimperator插件配置

    具体配置什么,同学们可以网上看下善用佳软关于Vimperator的说明,在这里我列出两条我个人觉得最有用的命令 set nextpattern=\s*下一页|下一张|下一篇|下页|后页\s*,^\bn ...