需求:打印如下直角三角形
*****
****
***
**
*
思路:
代码实现:
class ForForDemo {
public static void main(String[] args) {
System.out.println("--------------------------");
System.out.println("第一种方法,定义列数变量z1");
int z1 =5;
for (int x=0;x<5;x++ ){
for (int y=0;yout.print("*");
}
System.out.println("");
z1--;
}
System.out.println("--------------------------");
System.out.println("第二种方法,定义列数变量z2");
int z2 =0;
for (int x=0;x<5 ;x++ ){
for (int y=z2;y<5 ;y++ ){
System.out.print("*");
}
System.out.println("");
z2++;
}
System.out.println("----------------------------------");
System.out.println("第三种方法,列变量用行的变量来代替");
for (int x =0;x<5 ;x++ ){
for (int y=x;y<5 ;y++ ) /*或者for (int y=0;y<5-x;y++)*/{
System.out.print("*");
}
System.out.println("");
}
System.out.println("------------------------");
System.out.println("打印与之相反的直角三角形");
for (int x=0;x<5 ;x++ ){
for (int y=0;y<=x ;y++ ){
System.out.print("*");
}
System.out.println("");
}
}
}
需求:打印如下正三角形(倒三角形和正三角形)
* * * * *
* * * *
* * *
* *
*
---------
*
* *
* * *
* * * *
* * * * *
思路:
代码实现:
class TriangleDemo {
public static void main(String[] args) {
for (int x=0;x<5 ;x++ ){
//用于打印每行变化的空格数
for (int n=0;nout.print(" ");
}
for (int y=0;y<5-x ;y++ ){
System.out.print("* ");
}
//用于换行
System.out.println("");
}
System.out.println("---------");
//以下用于打印与上面相反的正三角形
for (int x=0;x<5 ;x++ ){
for (int n=x;n<4 ;n++ ){
System.out.print(" ");
}
for (int y=0;y<=x ;y++ ){
System.out.print("* ");
}
System.out.println("");
}
}
}
思路:
代码示例:
/*
需求:对数组arr[6]={2,6,4,1,8,9}进行选择排序
*/
class SelectDemo {
//定义数组打印函数:1.结果无具体值;2.参数为数组
public static void printArray(int []arr){
System.out.print("[");
for (int x=0;xif (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;
temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
//定义选择排序函数:1.结果无具体值,返回类型为void;2.参数为数组
public static void selectSort(int []arr){
for (int x=0;x1 ;x++ ){ //外循环从第一个数取到倒数第二个数
for (int y=x+1;y//内循环将所取外循环数后面的数遍历,并与外循环的数比较
if (arr[x]>arr[y]) //如果外循环的数大于内循环的数,则交换位置
swap(arr,x);
}
}
//主函数入口
public static void main(String[] args) {
int []arr =new int []{2,6,4,1,8,9};
System.out.println("排序前:");
printArray(arr);
selectSort(arr);
System.out.println("排序后:");
printArray(arr);
}
}
思路:
代码示例:
public static void bubbleSort(int[]arr) {
for (int x=0;x1;x++){ //外循环控制每次相邻比较的次数
for(int y=0;y1-x;y++){ ////内循环将相邻的两个数进行比较,每次从第一个数开始并依次减少一次
if(arr[y]> arr[y+1])
swap(arr,y,y+1);
}
}
}
注:实际开发中直接调用Arrays类中的sort()方法(导入util下的Arrays包)即可!
前提:数组有序。
public static int binarySearch(int[]arr,int key){ //传入key=9的实现过程
int min=0;
int max =arr.length-1; //5
int mid =(min+max)/2; //2
while(min<=max){ //0<5 3<5 4<5 5=5
if (arr[mid]//4<9 8<9 8<9
min = mid+1; //3 4 5
mid = (min+max)/2; //4 4 5
}
else if(arr[mid]>key){
max = mid -1;
mid = (min+max)/2;
}
else
return mid; // 5
}
return -1;
}
//注:可以将while前的int mid =(min+max)/2;放入while循环的首行中,可以省略if和if elae中的mid = (min+max)/2;语句达到简化代码的效果。
class SearchDemo {
public static int searchDemo(int []arr,int key){
int min=0,max=arr.length-1,mid;
while (min<=max) {
mid=(min+max)/2;
if (arr[mid]1;
else if (arr[mid]>key)
max=mid-1;
else return mid;
}
return min;
}
public static void main(String[] args) {
int []arr=new int[]{13,15,19,28,33,45,78,106};
int []arr_2=new int[9];
System.out.println("原数组:");
printArray(arr);
int index =searchDemo(arr,44);
System.out.println("插入的数为44;index="+index);
//求新数组
for (int x=0;x44;
for (int x=index+1;x<9 ;x++ )
arr_2[x]=arr[x-1];
System.out.println("新数组:");
printArray(arr_2);
}
//定义数组打印函数
public static void printArray(int []arr){
System.out.print("[");
for (int x=0;xif (x!=arr.length-1)//判断不是最后的数就加“,”,否则加“]”;
System.out.print(arr[x]+",");
else
System.out.println(arr[x]+"]");
}
}
}