JAVA作用域和排序算法介绍

一、作用域

1、作用域的概念

所谓的作用域是指引用可以作用到的范围。

一个引用的作用域是从引用定义位置到包裹它的最近的大括号的结束位置。只有在作用域范围内才可以访问到引用,超出作用域无法访问引用。

定义多个同名字的引用,作用不可重叠,如果重叠,编译会报错。

2、作用域实例

public class Demo06{
    public static void main(String[] args) {
      {
          int i = 2;  //作用域仅限该大括号内
      }
      System.out.println(i);
    if(true){
        int i = 1;
        System.out.println(i);
    }
   }
}

二、数组

1、数组的概念

数组是长度固定,内容可变的存储多个同一类型数据的容器。

2、定义数组

a、方式一

类型[] 引用名称 =new 类型[长度];

**其中引用中的 [] 可以出现在引用名之前或之后;

这种方式定义的数组,只定义了长度,没有指定初始值,则初始值采用默认值。数值类型为0;char类型为‘a’;boolean类型的为false,引用类型的为null。

b、方式二

类型 [] 引用名称 = new 类型[]{数组的初始内容};
   **其中引用中的[]可以出现在引用名之前或之后

这种方式定义的数组,指定了数组的初始值,而数组的长度等于元素的个数。

c、方式三

类型[] 引用名称 = {数组的初始内容};

**其中引用中的[]可以出现在引用名之前或之后;

这种方式定义的数组,指定了数组的初始值,而数组的长度等于元素的个数。

实例:

public class Demo07{
    public static void main(String args[]){
        //1.定义数组方式一

        int [] nums1 = new int[5];
        int nums2 [] = new int[5];
        char [] cs = new char[5];
        boolean [] bs = new boolean[5];
        String [] strs = new String[5];
        System.out.println(nums1[0]);
        System.out.println(cs[0]);
        System.out.println(bs[2]);
        System.out.println(strs[3]);

        //2.定义数组方式二
        int [] nums = new int[]{1,3,5,7,9};

        //3.定义数组方式三
        int [] nums = {2,4,6,8,10};
    }
}

3.数组的基本操作

a、获取数组中的元素

通过数组引用【元素的索引】就可以访问到数组的元素。所谓的索引就是元素在数组中的位置,索引由0开始,最大的索引是数组的长度 - 1。

获取数组的元素方式见上例子。

b、获取数组的长度

通过访问数组的length属性,可以得到数组的长度。

//2.获取数组的长度
int [] nums = {1,3,5,7,9};
System.out.println(nums.length);

c、遍历数组

两种方式:for循环和增强for循环。

//3.遍历数组 - 普通for
int [] nums = {1,3,5,7,9,11,13};
for(int i=0;i<nums.length;i++){
  System.out.println(nums[i]);
} 

//4.遍历数组 - 增强for循环 int [] nums = {1,3,5,7,9}; for(int x : nums){ 
System.out.println(x); 
}

d、修改数组中的元素

//5.修改数组中的元素
int [] nums = {1,3,5,7,9};
for(int x : nums){
   nums[2] = 100;
  System.out.print(x+" ");
}

4、数组常用应用

a、获取数组中的最大最小值

//6.获取数组中 最大值/最小值
int [] nums = {-23,-5,-3,-234,-2};
 if(nums.length > 0) {    int max = nums[0];    for(int x :nums) {      if(x > max) {         max = x;      }    }}else {
  System.out.println("数组为空!");
}

b、查找数组中元素所在位置

//7.查找指定元素所在的位置

int [] nums = {2,3,65,23,6,3,78,9};
int find = 3;

for(int i = 0;i<nums.length; i++) {

if(find == nums[i]) {

System.out.println("数字"+find+"出现在数组"+i+"位");

}

}

c、翻转数组

//8.反转数组 0--4 1--3 2 -- 2 3 -- 1 4 --0
int nums [] = {2,3,65,23,6};
int nums2 [] = new int[nums.length];
for(int i=0;i<nums.length;i++){
   nums2[nums.length - 1 - i] = nums[i];
} for(int x : nums2){ 
System.out.println(x); 
}

5、数组排序

a、常见排序算法及其效率

b、冒泡排序:将数组中的数据从第一位开始依次比较,放到0~length-1处。

       //1.冒泡排序
        int nums [] = {1,34,56,8,-32,7,-9,0,235};
        for(int i=0;i<nums.length;i++){//当前要确定的是哪个位置的数
            for(int j =nums.length-1;j>=i+1;j--){
                if(nums[j-1]>nums[j]){
                    int tmp = nums[j-1];
                    nums[j-1] = nums[j];
                    nums[j] = tmp;
                }
            }
        }
        for(int x : nums){
            System.out.println(x);
        }

c、选择排序:将数组中的数据下标拿出来,比较该下标处数组的值和其余值的大小;如果比其他值大,则交换二者下标的值;并将二者的值相互交换。

原理图:

实例代码:

//2.选择排序
        int nums [] = {1,34,56,8,-32,7,-9,0,235};
        for(int i=0;i<nums.length;i++){
            int tmp = i;
            for(int j=i+1;j<nums.length;j++){
                if(nums[j]<nums[tmp]){
                    tmp = j;
                }
            }
            //换 tmp 和 i 指向的数
            int x = nums[tmp];
            nums[tmp] = nums[i];
            nums[i] = x;
        }

        for(int x : nums){
            System.out.println(x);
        }

原文地址:https://www.cnblogs.com/chhyan-dream/p/10659313.html

时间: 2024-08-29 17:58:36

JAVA作用域和排序算法介绍的相关文章

Java中各种排序算法

//插入排序:package org.rut.util.algorithm.support; import org.rut.util.algorithm.SortUtil;/** * @author treeroot * @since 2006-2-2 * @version 1.0 */public class InsertSort implements SortUtil.Sort{ /** (non-Javadoc) * @see org.rut.util.algorithm.SortUtil

Java中冒牌排序算法

冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面. 即首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后.重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到最大数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最大数.如此下去,直至最终

java的各种排序算法的分析及实现

一.插入排序 ?思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置,直到全部插入排序完为止. ?关键问题:在前面已经排好序的序列中找到合适的插入位置. ?方法: –直接插入排序 –二分插入排序 –希尔排序 ①直接插入排序(从后向前找到合适位置后插入) 1.基本思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置(从后向前找到合适位置后),直到全部插入排序完为止. java代码实现: package com.sort; public cla

Java常用的排序算法

转载自博客http://blog.csdn.net/xsf50717 排序算法 重要性不言而喻,很多算法问题往往选择一个好的排序算法往往问题可以迎刃而解 1.冒泡算法 冒泡排序(Bubble Sort)也是一种简单直观的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端.也就是双重循环就可以搞定的问题但是需

java实现各种排序算法及比较

常见排序算法包括以下七种:选择排序.冒泡排序.插入排序.快速排序.希尔排序.堆排序.归并排序. 在学习具体算法实现并进行比较前,先来学习算法比较的几个维度. 一是稳定性 所谓稳定性,是指值相等的两个元素在排序前后是否会发生位置的交换.如果不会发生交换,则认为是稳定的算法:反之,则认为是不稳定的排序算法. 二是时间复杂度,指执行算法所需的时间长短.简单说就是算法执行的快慢程序. 三是空间复杂度,指执行算法所占用的内存大小. 有了这些基本概念,下面就来看以上七种排序算法的java版实现 /** *

Java 8大排序算法

直接插入排序 //直接插入排序 public int[] insertSort(int[] a) { for (int i = 1; i < a.length; i++) { int j = i - 1; for (; j >= 0 && a[j] > a[i]; j--) { a[j + 1] = a[j];//往后移 } a[j + 1] = a[i]; } return a; } 希尔排序 //希尔排序 public int[] shellSort(int[] a)

Java实现八大排序算法

本文对常见的排序算法进行了总结. 常见排序算法如下: 直接插入排序 希尔排序 简单选择排序 堆排序 冒泡排序 快速排序 归并排序 基数排序 它们都属于内部排序,也就是只考虑数据量较小仅需要使用内存的排序算法,他们之间关系如下: 稳定与非稳定: 如果一个排序算法能够保留数组中重复元素的相对位置则可以被称为是 稳定 的.反之,则是 非稳定 的. 直接插入排序 基本思想 通常人们整理桥牌的方法是一张一张的来,将每一张牌插入到其他已经有序的牌中的适当位置.在计算机的实现中,为了要给插入的元素腾出空间,我

经典(java版)排序算法的分析及实现之三简单选择排序

选择排序-简单选择排序 选择排序的基本思想是:每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子系列的最后,直到全部记录排序完毕.简单选择排序也叫直接选择排序. 基本算法: 将给定待排序序列A[0....n],第一次从A[0]~A[n-1]中选取最小值,与A[0]交换,第二次从A[1]~A[n-1]中选取最小值,与A[1]交换,....,第i次从A[i-1]~A[n-1]中选取最小值,与A[i-1]交换,.....,第n-1次从A[n-2]~A[n-1]中选取最小值,与A[n-2]

Java学习笔记——排序算法之希尔排序(Shell Sort)

落日楼头,断鸿声里,江南游子.把吴钩看了,栏杆拍遍,无人会,登临意. --水龙吟·登建康赏心亭 希尔算法是希尔(D.L.Shell)于1959年提出的一种排序算法.是第一个时间复杂度突破O(n2)的算法之一. 其基础是插入排序. 上代码: 1 public class ShellSort { 2 3 public static void shellSort(int[] arr){ 4 5 int increment = arr.length; 6 int temp;//牌 7 int i; 8