java学习之数组排序一:选择排序
在讲完java中数组定义的两种方式之外,这里需要讲一下对数组常用的方法,第一个就是排序。
加入我们现在有个数组:int[] arr = {12,87,34,3,98,33,103};
思路1:
1、首先拿数组当中的第一个数字与其他数字一一做比较,如果比第一个数字大,那么就两个元素调换下位置,如果小于或者等于就维持原来的状态。循环往复,直至确定第一个数字是这个数组当中的最小值。然后把索引为0的元素,放到一边,之后再用索引为1的元素与其他元素依次比较,如果大于索引1的位置的元素,那么两者互换下位置,如果小于或者等于那么则保持各自位置不变,之后在索引位置2的位置,确定剩下的数字当中是最小的,其他位置的元素也是按照这种排序方法。需要注意的是最后一个元素就不用比较了,肯定是最大的。

选择排序:
class SelectSort
{ public static void main(String[] args)
{ int[] arr = {12,87,34,39,134,4,45,8,21233,99}; printArr(arr); selectSort(arr); printArr(arr); } public static void selectSort(int[] arr){ for(int i = 0; i<arr.length-1; i++)
{ for(int a = i + 1; a<=arr.length-1 ; a++)
{
/**
* if(arr[i]>arr[a])
* {
* int temp = arr[i];
* arr[i] = arr[a];
* arr[a] = temp;
* }
*/
if(arr[i]>arr[a])
swap(arr,i,a); } } } public static void printArr(int[] arr)
{
System.out.print("[");
for(int i=0 ; i<arr.length ; i++){ System.out.print(arr[i]);
if(i<arr.length-1)
System.out.print(","); }
System.out.print("]");
System.out.println(); } public static void swap(int[]arr,int x, int y)
{ int temp;
if(arr[x]>arr[y])
{ temp = arr[x];
arr[x] = arr[y];
arr[y] = temp; } } }
java学习之数组排序一:选择排序的更多相关文章
- java结构与算法之选择排序
一 .java结构与算法之选择排序(冒择路兮快归堆) 什么事选择排序:从一组无序数据中选择出中小的的值,将该值与无序区的最左边的的值进行交换. 简单的解释:假设有这样一组数据 12,4,23,5,找到 ...
- 数组排序-冒泡排序-选择排序-插入排序-希尔排序-快速排序-Java实现
这五种排序算法难度依次增加. 冒泡排序: 第一次将数组相邻两个元素依次比较,然后将大的元素往后移,像冒泡一样,最终最大的元素被移到数组的最末尾. 第二次将数组的前n-1个元素取出,然后相邻两个元素依次 ...
- JavaScript ,Python,java,Go系列算法之选择排序
常见的内部排序算法有:插入排序.希尔排序.选择排序.冒泡排序.归并排序.快速排序.堆排序.基数排序等. 用一张图概括: 选择排序 选择排序是一种简单直观的排序算法,无论什么数据进去都是O(n2) ...
- 使用C语言和Java分别实现冒泡排序和选择排序
经典排序算法--冒泡和选择排序法 Java实现冒泡排序 基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素放到顶端,最终达到完全有序,首先看个动图: 我们要清楚 ...
- [转]Java学习---7大经典的排序算法总结实现
[原文]https://www.toutiao.com/i6591634652274885128/ 常见排序算法总结与实现 本文使用Java实现这几种排序. 以下是对排序算法总体的介绍. 冒泡排序 比 ...
- java面向对象的冒泡排序,选择排序和插入排序的比较
这三种排序有俩个过程: 1.比较俩个数据. 2.交换俩个数据或复制其中一项. 这三种排序的时间级别 冒泡排序:比较 (N-1)+(N-2)+...+2+1 = N*(N-1)/2=N2/2 交换 0 ...
- 【算法拾遗(java描写叙述)】--- 选择排序(直接选择排序、堆排序)
选择排序的基本思想 每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,知道所有记录排序完毕.主要有两种选择排序方法:直接选择排序(或称简单选择排序)和堆排序. 直接选择排序 ...
- java学习笔记(5)-排序(1)
标签(空格分隔): 学习笔记 1. 冒泡 public class MaoPao{ public static void sort(int[] arr){ for(int i=arr.length-1 ...
- JAVA学习笔记(4)—— 排序算法
排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. 排序算法大体可分为两种: 一种是比较排序,时间复杂度O(nlogn) ...
随机推荐
- linux共享windows资料
linux 只有NTFS格式不能访问,其的都可以.1.用fdisk -l 查看分区表.2.然后用mount -t vfat /mnt/hda1 /dev/hda1 就可以了./mnt/hda1是一普通 ...
- Java基础知识强化07:打印出空心菱形
1.如图打印出空心菱形: 2.下面是逻辑实现代码: package himi.hebao04; import java.util.Scanner; public class TestDemo08 { ...
- ubuntu下git clone 出现Permission denied (publickey).
今天在ubuntu上使用git 克隆 github上面的库,一直权限拒绝Permission denied (publickey). 公钥绑了好几次,都不行: 最后怀疑是git配置公钥地址有问题:打开 ...
- Jquery方法load之后导致js失效解决方法
Jquery方法load之后导致js失效解决方法 >>>>>>>>>>>>>>>>>>> ...
- 15、SQL Server 触发器
SQL Server 触发器 触发器是一种特殊的存储过程,只有当试图用数据操作语言DML来修改数据时才会触发,DML包含对视图和表的增.删.改. 触发器分为DML触发器和DDL触发器,其中DML触发器 ...
- VS 创建 使用C++ 静态类库(Dll)
创建静态类库 Walkthrough: Creating and Using a Dynamic Link Library (C++) 1:菜单栏-->File, New, Project. 2 ...
- Axiom3D学习日记 0.Axiom基础知识
Axiom 3D Engine An open-source, cross-platform, managed 3D rendering engine for DirectX, XNA and Ope ...
- sql-从查询结果创建一个永久表
语法: select x into new_tableName from ori_tableName 例如: SELECT [site] ,[day] ,[val]/31.4 [val] into ...
- Dictionary的遍历和修改
/// <summary> /// 初始化一个Dic /// </summary> public static void mainTe ...
- Pomelo实现最简单的通信-egret。
昨天因为需要开始学习Pomelo 做H5游戏的服务端. 因为个人学习习惯,我从来不适合去跟着文档看.一般我直接是看下大概的API,但是Pomelo的API全部都是英文的. 昨天我就告诉自己用一下午时间 ...