目錄
一.排序
1.1 冒泡排序
1.2 選擇排序
1.3 插入排序
1.4 系統排序
二.二維陣列
2.1 二維陣列的賦值與取值
2.2 二維陣列的遍歷
2.3 二維陣列的創建
一.排序
1.1 冒泡排序

//冒泡排序:相鄰兩數兩兩比較,大的放右邊,比較完一輪后,最右邊的數為最大值;以此類推共比較(長度-1)輪
//流程: 1.先畫圖分析 2.再寫代碼
public class MaoPao {
public static void main(String[] args) {
int[] a= {3,1,5,2,9,7,4,6};
for(int i=0;i<a.length-1;i++) {//外層代表輪數
for(int j=0;j<a.length-1-i;j++) {//內層代表每輪比較次數,依次遞減
if(a[j]>a[j+1]) {
int t=a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
//System.out.println("第"+(i+1)+"輪:"+Arrays.toString(a));
}
System.out.println("排序后:"+Arrays.toString(a));
}
}
1.2 選擇排序

//選擇排序:假設第一個元素為最小,依次與后面元素比較;比較完一輪確定第一個位置元素是最小的;
// 假設第二個元素最小,依次與后面元素比較,以此類推;共比較(長度-1)輪
public class XuanXe {
public static void main(String[] args) {
int[] a = {3,1,5,2,9,7,6,4};
for(int i=0;i<a.length-1;i++) { //外層代表輪數
for(int j=1+i;j<a.length;j++) { //記憶體代表每輪比較次數
if(a[i]>a[j]) {
int t = a[i];
a[i] = a[j];
a[j] = t;
}
}
//System.out.println("第"+(i+1)+"輪:"+Arrays.toString(a));
}
System.out.println("排序后:"+Arrays.toString(a));
}
}
1.3 插入排序

//插入排序
public class Insert {
public static void main(String[] args) {
int[] a= {3,1,5,2,9,7,4,6};
int t;
int j;
for(int i=0;i<a.length;i++) { //外層代表輪數
j = i;
t = a[i];
while(j>0 && t<a[j-1]) {
a[j] = a[j-1];
j--;
}
a[j] = t;
System.out.println("第"+(i+1)+"輪"+Arrays.toString(a));
}
System.out.println("排序后:"+Arrays.toString(a));
}
}
1.4 系統排序
//系統提供的排序方法(系統寫好了具體實作,我們只需要呼叫即可)
public class SystemSort {
public static void main(String[] args) {
int[] a = {3,1,5,2,6};
Arrays.sort(a); //系統提供的升序排列
System.out.println(Arrays.toString(a));
//假設系統提供升序排列后,我們需要降序排列,如何做?
//分析:收尾交換,交換長度/2次
int len = a.length;
for(int i=0;i<len/2;i++) {
int t = a[i];
a[i] = a[len-1-i];
a[len-1-i]=t;
}
System.out.println("降序排列:"+Arrays.toString(a));
}
}
二.二維陣列

2.1 二維陣列的賦值與取值
public class Test1 {
public static void main(String[] args) {
//二維陣列的操作:可以看成行和列的操作,長度由行長度和列長度,下標有行下標和列下標
int[][] a = new int[2][3]; //2是行長度 3是列長度
//賦值
a[0][0] = 4; //二維陣列賦值 行下標范圍:0~行長度-1 列下標范圍:0~列長度-1
a[0][1] = 2;
a[0][2] = 6;
//a[0][3] = 7; //列下標溢位
a[1][0] = 8;
//取值
System.out.println(a[0][0]+"--"+a[0][1]+"--"+a[0][2]);
System.out.println(a[1][0]+"--"+a[1][1]+"--"+a[1][2]);
//System.out.println(a[2][0]); //行下標溢位
//注意: 一般二維陣列的排列,往往人為的設計成行和列的排列,方便我們操作
}
}
2.2 二維陣列的遍歷
//二維陣列的回圈遍歷
public class Test2 {
public static void main(String[] args) {
//二維陣列的操作:可以看成行和列的操作,長度由行長度和列長度,下標有行下標和列下標
int[][] a = new int[2][3]; //2是行長度 3是列長度
//賦值
a[0][0] = 4; //二維陣列賦值 行下標范圍:0~行長度-1 列下標范圍:0~列長度-1
a[0][1] = 2;
a[0][2] = 6;
//a[0][3] = 7; //列下標溢位
a[1][0] = 8;
//回圈遍歷
for(int i=0;i<a.length;i++) { //a.length:行長度
for(int j=0;j<a[i].length;j++) { //每行的列的個數
System.out.print(a[i][j]+"\t");
}
System.out.println(); //回車
}
}
}
2.3 二維陣列的創建
//二維陣列的創建:
public class Test3 {
public static void main(String[] args) {
//----動態賦值-----
//1.先宣告再創建空間
int[][] a;
a = new int[2][3];
//2.宣告的同時創建空間 (常用)
int[][] b = new int[2][3];
//3.創建空間的同時給定行長度
int[][] c = new int[2][];
c[0]=new int[]{3,5,8};
c[1]=new int[]{1,5,7};
//----靜態賦值-----
//4.創建空間的同時進行賦值
int[][] d = {{1,2,5},{4,6,8}}; //二行三列的二維陣列
//注意:第三種和第四種可以指定不規則的列(了解),回圈遍歷是一樣的 例如:下面靜態賦值的操作:
int[][] e = {{1,2,5},{4,6}};
for(int i=0;i<e.length;i++) {
for(int j=0;j<e[i].length;j++) {
System.out.print(e[i][j]+"\t");
}
System.out.println(); //回車
}
}
}
(周六周日休息,=-=,今日沒啥分享的...多敲多練,不要讓腦子生銹!!!)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/325484.html
標籤:其他
