佰落暑期java自学记录-7
记录时间:2019-7-27
记录内容摘要:
1、一维数组
2、排序
1、一维数组
在数组的定义上Java与C语言有较大差距;
c中是类型名 数组名[个数];c中要求必须在定义时给定数组长度,用来分配内存空间
而Java中则未严格要求给出数组元素个数,若数组直接初始化,系统会直接测得数组元素个数,可以用 数组名.length()来获得数组的长度,也即数组元素个数。
常用定义数组方法是:int[] name = new int[个数]
数组的调用方面与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中定义控制变量与在外面定义控制变量,程序的运行时间会有什么不同,不过由于系统问题没测出来;