数组

示例数组:

int[] arr = {3,2,4,5,7,6,1};
遍历数组:
	public static void printArray(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.println(arr[x]+"}");
			}
		}
	}
对数组中两个元素互换位置:

	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(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);//将x,y角标的两个元素置换位置
		}
	}
}
选择排序的思路:

原始数组角标与元素对照。简图如下:

角      标:[0]        [1]       [2]        [3]        [4]        [5]        [6]

数组元素:3          2        4          5          7          6          1

内层第一次循环执行了什么?内层循环结束结果是什么?

如代码所示:内层第一次循环:如果0角标的元素值大于1角标的元素值,将这两个元素进行互换位置。反之,不互换位置。执行结果简图如下:

角      标:[0]        [1]       [2]        [3]        [4]        [5]        [6]

数组元素:2         3         4          5          7          6          1

内层循环继续循环,当比较arr.length-1次数后,确定数组中最小的元素,并将它放在了0角标的位置,即最左边。执行结果简图如下:

角      标:[0]        [1]       [2]        [3]        [4]        [5]        [6]

数组元素:1         3         4          5          7          6          2

当角标为0的元素确定后,就不再参与比较,就好像说:“我最小,你们玩吧!我不给你们玩了”。外层第二次循环,将数组中角标为1的元素按照以上说的方式与后边的元素依次比较,最后比较出最小的元素放在了1角标的位置上。以后后边的元素依次按照这种方式确定位置,所以数组中的元素按照由小到大的顺序排列了。执行结果简图如下:

角标:[0]       [1]     [2]       [3]        [4]        [5]        [6]

一次:1         3       4          5          7          6          2

二次:1         2       4          5          7          6          3

三次:1         2       3          5          7          6          4

四次:1         2       3          4          7          6          5

五次:1         2       3          4          5          7          6

六次:1         2       3          4          5          6          7





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值