黑马程序员技术交流社区
标题:
数组排序示例小结
[打印本页]
作者:
晓随缘
时间:
2015-9-21 11:39
标题:
数组排序示例小结
以下是自己初学所做的示例笔记,可能不够规范,但对于本人新人来讲还是比较清晰的了,不足以及疏漏之处希望各位指点一下!
import java.util.*;
/*
需求:
1.定义一个可以存储10个整数的容器,
2.打印数组中角标为0的值,
3.对数组 int[] arr={2,45,56,4,65,87,345,6756,5435,675,43534,43634};进行遍历,
4.定义功能,用于打印数组中的元素,元素用逗号隔开
5.给定一个数组int[] arr={24,45,56,4,65,87,345,6756,5435,675,43934,43734};,获取数组中最大值以及最小值。
6.对数组int[] arr={24,45,56,4,65,87,345,6756,5435,675,43934,43734};进行从小到大和从大到小排序。
7对数组int[] arr={24,45,56,4,65,87,345,6756,5435,675,43934,43734}进行冒泡排序。
*/
public class Sz
{
public static void bubbleSort1(int[] arr)
{
for(int x=0;x<arr.length-1;x++)
{
for(int y=0;y<arr.length-x-1;y++)
//-x:让每一次比较的元素减少;-1:避免角标越界
{
if(arr[y]<arr[y+1])
{
/*
int temp=arr[y];
arr[y]=arr[y+1];
arr[y+1]=temp;
*/
swap(arr,y,y+1);
}
}
}
}
//从大到小进行冒泡排序
public static void bubbleSort(int[] arr)
{
for(int x=0;x<arr.length-1;x++)
{
for(int y=0;y<arr.length-x-1;y++)
//-x:让每一次比较的元素减少;-1:避免角标越界
{
if(arr[y]>arr[y+1])
{
int temp=arr[y];
arr[y]=arr[y+1];
arr[y+1]=temp;
}
}
}
}
//进行从小到大冒泡排序
//冒泡排序:内循环结束一次,最值出现在最后位
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])
{
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
}
//进行从小到大排序
public static void selectSort1(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])
{
/*
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
*/
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 getLine()
{
System.out.println("-------------------------------------");
}
//分割线
public static void getArray(int[] arr)
{
System.out.print("[");
for(int x=0;x<arr.length;x++)
{
if(x<arr.length-1)
System.out.print(arr[x]+",");
else
System.out.print(arr[x]);
}
System.out.println("]");
}
//功能,用于打印数组中的元素,元素用逗号隔开
public static int getMax(int[] arr)
{
int max=arr[0];
for(int x=1;x<arr.length;x++)
{
if(max<arr[x])
max=arr[x];
}
return max;
}
//获取数组中最大值
public static int getLeast(int[] arr)
{
int least=arr[0];
for(int x=1;x<arr.length;x++)
{
if(least>arr[x])
least=arr[x];
}
return least;
}
//获取数组中最小值
public static void main(String[] args)
{
//定义一个可以存储10个整数的容器
int[] sum = new int[10];
sum[0]=39;
sum[1]=213;
sum[2]=424;
sum[3]=464;
sum[4]=443;
sum[5]=444;
sum[6]=4354;
sum[7]=434;
sum[8]=474;
sum[9]=4744;
System.out.println(sum[0]);//打印数组中角标为0的值
getLine();
//对数组进行遍历
int[] arr={24,45,56,4,65,87,345,6756,5435,675,43934,43734};
for(int x=0;x<arr.length;x++)
{
//System.out.println("sum["+x+"]"+"="+sum[x]+";");
System.out.println("arr["+x+"]"+"="+arr[x]+";");
}
getLine();
//定义功能,用于打印数组中的元素,元素用逗号隔开
getArray(arr);
getLine();
//给定一个数组,获取数组中最大值以及最小值。
//获取数组中最大值
int max1=0;
for(int b=0;b<arr.length;b++)
{
if(arr[max1]<arr[b])
max1=b;
}
System.out.println("max="+arr[max1]);
getLine();
//获取数组中最小值
int least1=0;
for(int b=0;b<arr.length;b++)
{
if(arr[least1]>arr[b])
least1=b;
}
System.out.println("least="+arr[least1]);
getLine();
int max=getMax(arr);
System.out.println("max="+max);
getLine();
int least=getLeast(arr);
System.out.println("least="+least);
getLine();
selectSort(arr);
getArray(arr);
getLine();
//选择排序:从小到大排序
selectSort1(arr);
getArray(arr);
getLine();
//选择排序:从大到小排序
bubbleSort(arr);
getArray(arr);
getLine();
//进行从小到大冒泡排序
bubbleSort1(arr);
getArray(arr);
getLine();
//进行从大到小冒泡排序
Arrays.sort(arr);
/*
在顶部定义import java.util.*;
java中已经定义好的一种排序方式,开发中对数组排序,要使用该句代码。
效率相对稍高,不容易出错
*/
getArray(arr);
getLine();
}
}
复制代码
作者:
maxwell247
时间:
2015-9-21 13:57
当初我一个人冥思苦想冒泡排序,想了很久才弄明白。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2