数组是指一组数据的集合,数组中的每个数据叫做元素,在java中,数组也是java对象。数组中的元素可是任意类型(基本类型和引用类型),但同一个数组里只能存放类型相同的元素。创建数组大致包括以下步骤:
1、声明一个数组类型的引用变量,建成数组变量
2、用new语句构造数组的实例。new语句为数组分配内存,并且为数组中的每个元素赋予默认值
3、初始化,即为数组的每个元素设置合适的初始值
数组是一个使用频率较高的数据结构,在实际应用中会经常使用到,对数组元素进行排序更是重中之重。下面就说说数组元素的集中排序方式:
a、首先介绍的是,冒泡法排序,代码如下:
package arrayDemo; public class ArraySorter { public static void bubbleSort(int[] array){ for (int i = 0; i < array.length-1; i++) { for (int j = 0; j < array.length-i-1; j++) { if (array[j]>array[j+1]) { int temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; } } print(i+1,array); } } private static void print(int time, int[] array) { // TODO Auto-generated method stub System.out.print("第"+time+"次排序"); for (int i = 0; i < array.length; i++) { System.out.print(array[i]+""); } System.out.println(); } public static void main(String[] args) { // TODO Auto-generated method stub int [] array = {2,8,4,9,6,1,0}; bubbleSort(array); } }
冒泡排序原理图示:
特别提示:相邻的两个数交换,这是冒泡法排序的特征,从图示中你可以清楚的看出来。在下面的程序中表现为a[j]和a[j+1]。
b、 选择排序。(从小到大)。
思想:
先选择一个指定数组位置,不断以该位置上的元素去和其他元素比较。
如果其他元素小于该位置元素,就进行换位。然后还以该位置为主继续比较。
在内循环执行结束。这时该位置上就出现了最小值。
public static void selectSort(int [] arr) { for (int x=0; x<arr.length-1;x++ ) { for (int y=x+1; y<arr.length ;y++ ) { if(arr[x]>arr[y]) { swap(arr,x,y); } } } } public static void swap(int[] arr,int a,int b) { int temp = arr[a]; arr[a] = arr[b]; arr[b] = temp; }
这样排序的话,每次都要进行数组元素位置的互换,会消耗大量的内存,所以,可以就行一下性能优化
public static void selectSort_2(int[] arr) { //num 存储每一次比较完的较小的值。 //index 记录较小值的脚标。 int num,index; for(int x=0; x<arr.length-1; x++) { num = arr[x]; index = x; for(int y=x+1; y<arr.length; y++) { if(num>arr[y]) { num = arr[y]; index = y; } } //System.out.println("num="+num+",,,index="+index); if(index!=x) swap(arr,index,x); } }
数组排序在实际应用中使用频率很高,建议大家一定要掌握!!!