佰落暑期java自学记录-7

佰落暑期java自学记录-7

记录时间:2019-7-27
记录内容摘要:
1、一维数组
2、排序

1、一维数组
在数组的定义上Java与C语言有较大差距;
c中是类型名 数组名[个数];c中要求必须在定义时给定数组长度,用来分配内存空间
而Java中则未严格要求给出数组元素个数,若数组直接初始化,系统会直接测得数组元素个数,可以用 数组名.length()来获得数组的长度,也即数组元素个数。
常用定义数组方法是:int[] name = new int[个数]
佰落暑期java自学记录-7_第1张图片
数组的调用方面与c语言中基本相同;数组名[下标];

2、排序

现行的排序算法有许多种,各位大佬们也有许多详细总结,今天我用java联系了冒泡排序和选择排序;代码如下

		public class Array 
{
	public static void main(String[] args)
	{
//		int[] num = new int[10];//定义长度为10的整型数组
//		for(int i = 0 ; i < num.length ; i ++)//随机给值
//		{
//			num[i] = (int) (Math.random() * 10);
//		}
//		for(int i = 0 ; i < num.length ; i ++)//输出
//		{
//			System.out.println(num[i]);
//		}
		
//		for (int i : num) //foreach使用
//		{
//			System.out.println(num[i]);
//		}
		
		//排序;
		int[] num = new int[10];//定义长度为10的整型数组
		for(int i = 0 ; i < num.length ; i ++)//随机给值
			num[i] = (int) (Math.random() * 50);
		
		for(int i = 0 ; i < num.length ; i ++)//输出
			System.out.print(num[i]+",");
		
		System.out.println();
		
		//冒泡排序
//		for(int i = 0 ; i < num.length - 1 ; i ++)
//		{
//			for(int j = 0 ; j < num.length - i - 1; j ++)
//			{
//				if (num[j] > num[j+1])
//				{
//					int temp = num[j];
//					num[j] = num[j+1];
//					num[j+1] = temp;
//				}
//			}
//		}
//		for(int i = 0 ; i < num.length ; i ++)//输出
//			System.out.print(num[i]+",");
//		System.out.println();
		
		//选择排序
		int j = 0,i = 0;
		for(i = 0; i < num.length - 1; i ++)
		{
			int min = num[i];
			int index = i;
			for(j = i + 1; j < num.length ; j ++);
			{
				if(num[j] < num[index])
				{
					index = j;
					min = num[j];
				}
			}
			int temp = num[i];
			num[i] = num[index];
			num[index] = temp;
		}
		for(int i1 = 0 ; i1 < num.length ; i1 ++)//输出
			System.out.print(num[i1]+",");
		
		System.out.println();
		
	}
	
	

}

首先创建数组并给出随机值,用来下面的排序;

冒泡排序,
算法跟其名字特别相似,将数字像泡泡一样一个个冒出来,以升序为例,将大的一步步放到最上面,依此是第二大,然后一直到剩下一个元素。
其核心算法是两个嵌套循环,第一个循环控制轮数,第二个循环控制每轮的元素升降。

选择排序,
以升序为例,选择排序核心思想是依此找到最小的然后与第一个元素交换,然后找到次小的,与第二个元素交换,依此类推
算法核心也是两个嵌套循环,外循环控制第一个元素交换,内循环找到后i面元素中的较小值;

问题
1上代码在选择排序时,经调试后发现,内循环的控制变量赋值处在ecplise上出现问题,目前认为不是我的问题。。

2、在用到双重循环时,想要测试一下在for中定义控制变量与在外面定义控制变量,程序的运行时间会有什么不同,不过由于系统问题没测出来;

你可能感兴趣的:(自学记录)