数组是指一组数据的集合,数组中的每个数据叫做元素,在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);
}
}
数组排序在实际应用中使用频率很高,建议大家一定要掌握!!!