java数组
数组倒序实例:
package name;
public class hongfei {
public static void main(String[] args){
int[] test= {1,2,4,5,7};
for (int i : test) {//有冒号的for循环叫做foreach循环,foreach语 句是java5的新特征之一
//用for循环遍历test里的数值,将其逐个赋给i,然后再获取test[i]。
System.out.print(i + " ");
}
System.out.println("\n");
test = hongfei.reverse(test);
for (int i : test) {
System.out.print(+ i + " ");
}
}
public static int[] reverse(int[] arr){
int[] result = new int[arr.length];
for (int i = 0,j=result.length-1; i < arr.length; i++,j--) {
result[j] = arr[i];
}
return result;
}
}
注释
system.out.print(i+”“)与system.out.print(+i+”“)的区别:
这就看你i是什么类型的了
i+”“无论什么类型直接输出i的值
+i+”“int和double可以输出 但char或String不是 char的话+i将i转换成整型后输出 String话则无法输出
数组的申明
// 声明二维数组:有两行,列数待定,数组结构 = { { }, { } }
String s[][] = new String[2][];
// 确定每行的元素个数,第一行有2个元素,第二行有3个元素,
// 数组结构 = {{"E1", "E2"}, {"E1", "E2", "E3"}}
s[0] = new String[2];
s[1] = new String[3];
实现数组和字符串的转换处理
package name;
public class hongfei {
public static void main(String args[]) {
String str = "helloworld";
char[] data = str.toCharArray();// 将字符串转为数组
for (int x = 0; x < data.length; x++) {
System.out.print(data[x] + " ");
// data[x] -= 32;
// System.out.print(data[x] + " ");
}
System.out.println(new String(data));
}
}
结果
冒泡排序
public class BubbleSort {
/**
* N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N-i)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数。
* @param args
*/
public static void main(String[] args) {
int arr[] = {26,15,29,66,99,88,36,77,111,1,6,8,8};
for(int i=0;i < arr.length-1;i++) {//外层循环控制排序趟数
for(int j=0; j< arr.length-i-1;j++) {
//内层循环控制每一趟排序多少次
// 把小的值交换到前面
if (arr[j]>arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
System.out.print("第"+(i+1)+"次排序结果:");
//列举每次排序的数据
for(int a=0;a<arr.length;a++) {
System.out.print(arr[a] + "\t");
}
System.out.println("");
}
System.out.println("最终排序结果:");
for(int a = 0; a < arr.length;a++) {
System.out.println(arr[a] + "\t");
}
}
}
选择排序:
public class Start
{
public static void main(String[] args)
{
int[] arr={20,60,51,81,285,12,165,51,81,318,186,9,70};
for(int a:arr)
{
System.out.print(a+" ");
}
System.out.println("\n"+"---------------从大到小---------------");
arr=toSmall(arr);
for(int a:arr)
{
System.out.print(a+" ");
}
System.out.println("\n"+"---------------从小到大---------------");
arr=toBig(arr);
for(int a:arr)
{
System.out.print(a+" ");
}
}
// 从大到小
public static int[] toSmall(int[] arr)
{
//遍历数组里除最后一个的其他所有数,因为最后的对象没有与之可以相比较的数
for(int i=0;i<arr.length-1;i++)
{
/*遍历数组里没有排序的所有数,并与上一个数进行比较
*“k=i+1”因为自身一定等于自身,所以相比没有意义
*而前面已经排好序的数,在比较也没有意义
*/
for(int k=i+1;k<arr.length;k++)
{
if(arr[k]<arr[i])//交换条件(排序条件)
{
int number=arr[i];
arr[i]=arr[k];
arr[k]=number;
}//交换
}
}
return arr;
}
// 从小到大
//和前面一样
public static int[] toBig(int[] arr)
{
for(int i=0;i<arr.length-1;i++)
{
for(int k=i+1;k<arr.length;k++)
{
if(arr[k]>arr[i])
{
int number=arr[i];
arr[i]=arr[k];
arr[k]=number;
}
}
}
return arr;
}
}
原理
例如对49 38 65 97 76 13 27 49排序:
初始关键字 [49 38 65 97 76 13 27 49]
第一趟排序后 13 [38 65 97 76 49 27 49]
第二趟排序后 13 27 [65 97 76 49 38 49]
第三趟排序后 13 27 38 [97 76 49 65 49]
第四趟排序后 13 27 38 49 [76 97 65 49 ]
第五趟排序后 13 27 38 49 49 [97 65 76]
第六趟排序后 13 27 38 49 49 65 [97 76]
第七趟排序后 13 27 38 49 49 65 76 [97]
最后排序结果 13 27 38 49 49 65 76 97