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) ...
随机推荐
- 简单的代码实现的炫酷navigationbar
动图 技术原理: 当你下拉scrollview的时候,会监听scrollview的contentOffset来调整头部背景图片的位置,通过CGAffineTransformMakeTranslatio ...
- CentOS LNMP安装phpMyAdmin
假设: 已经配置好LNMP环境,并且Nginx的网页目录在/usr/local/nginx/html 1.下载phpMyAdmin wget https://files.phpmyadmin.net/ ...
- 将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据
领导让在存储过程中批量添加数据,找出效率最高的,我看到后台代码后,发现可以将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据,知道还有其 ...
- string.Join和Reverse的简单使用示例
String.Join 方法 (String, String[]) 串联字符串数组的所有元素,其中在每个元素之间使用指定的分隔符. 例如,如果 separator 为“,”且 value 的元素为“a ...
- ORACLE 数据库简单测试
ORACLE 数据库简单测试 操作系统:Windows 7 – ORACLE:oracle database 10.2.0.4 一.目的 测试 启动监听程序.数据库 非同一个用户的情况,用户是否可以 ...
- Codeforces 551C GukiZ hates Boxes(二分)
Problem C. GukiZ hates Boxes Solution: 假设最后一个非零的位置为K,所有位置上的和为S 那么答案的范围在[K+1,K+S]. 二分这个答案ans,然后对每个人尽量 ...
- javascript——面向对象程序设计(3)
<script type="text/javascript"> //1.结合使用构造函数模式和原型模式 //2.动态原型模式 //3.寄生构造函数模式 //4.稳妥构造 ...
- centos 安装vnc服务
1.安装tigervnc-server yum install tigervnc-server 2.启动vnc服务 vncserver:1 [错误提示待解决bad display name " ...
- CodeIgniter框架——介绍
CodeIgniter 是一个应用程序框架 CodeIgniter 是一个为用 PHP 编写网络应用程序的人员提供的工具包.它的目标是实现让你比从零开始编写代码更快速地开发项目,为此,CI 提供了一套 ...
- MySQL Procedure(MySQL存储过程)[转]
------Creating Stored Procedures in MySQL------ --Make sure you have version 5 of MySQL: SELECT VE ...