《第五天总结》 张伦琦
《数组综合练习》
数组练习一-----单重循环
A.数组遍历
class HomeWork//数组遍历
{
public static void main(String[] args){
char [] chars=new char[]{'A','B','C','D','E','F','G','H','I','J'};
ergodic(chars);
}
public static void ergodic(char [] chars){
for (int i=0;i<chars.length ;i++ ){
System.out.print(chars[i]+" ");
}
}
B.求数组中的最小值
class HomeWork
{
public static void main(String[] args){
int [] arr=new int[]{16,25,49,36,59,84,97,67,48,99};
System.out.println("The min is "+findMin(arr));
}
public static int findMin(int []arr){
int min=arr[0];
for (int i=0;i<arr.length;i++ ){
if (arr[i]<min){
min=arr[i];
}
}
return min;
}
}
C.求数组元素的和
class HomeWork
{
public static void main(String[] args){
int[]arr=new int[]{1,2,3,4,5,6,7,8,9,10};
System.out.println(sum(arr));
}
public static int sum(int []arr){
int summ=1;
for (int i=0;i<arr.length ;i++ ){
summ+=arr[i];
}
return summ;
}
}
D.数组转成字符串
class ArraryToString
{
public static void main(String[] args){
char [] chars=new char[]{'I',' ','L','o','v','e',' ','Y','o','u'};
String str=turnString(chars);
System.out.println(str);
}
public static String turnString(char []chars){//写方法前一定要明确方法的输入输出的类型或参数!!
String str="";
for (int i=0;i<chars.length ;i++ ){
str=str+chars[i];
}
return str;
}
}
E.根据下标找数组中的元素
class ArraryIndexFindElement
//数组中根据下标寻找元素。index:下标;element:元素
{
public static void main(String[] args){
char [] chars=new char[]{'I',' ','L','o','v','e',' ','Y','o','u'};
char answer=finding(chars,5);
System.out.println(answer);
}
public static char finding(char[] chars,int index){
//要注意防止数组越界异常!!!!
if(index<0||index>chars.length-1){
return ' ';
}
return chars[index];
}
}
F.反转数组
class ArraryReversal//数组反转
{
public static void main(String[] args){
char []chars=new char[]{'I',' ','L','o','v','e',' ','Y','o','u'};
print(chars);
System.out.println("*************");
reversal(chars);
print(chars);
}
public static void reversal(char [] chars){//交换方法
char temp;
for(int min=0,max=chars.length-1;min<max;min++,max--){
temp=chars[min];
chars[min]=chars[max];
chars[max]=temp;
}
}
public static void print(char []chars){//打印方法
for (int i=0;i<chars.length ;i++ ){
System.out.print(chars[i]);
}
System.out.println("");
}
}
G.进制转换,这个思维非常好!!用到位运算,补码计算!
public static void Bridge(int num,int radix){
if (radix==16){
toTurn(num,16,15,4);
}else if (radix==8){
toTurn(num,8,7,3);
}else if (radix==2){
toTurn(num,2,1,1);
}
}
//转化方法
public static void toTurn(int num,int radix,int Yu,int goBit){
int count=knowCount(num,radix);
int []arrNum=new int[count];
for(int i=0;i<count;i++){
arrNum[count-1-i]=num&Yu;//倒序存放数组,避免之后反转
num=num>>goBit;
}
System.out.println(turnString(arrNum));
}
//通过位运算的方法判断这个数字能拆成多少个4位二进制
public static int knowCount(int num,int radix){
int count=0;
for (;num!=0; count++){//count 就是位数
if (radix==16){
num=num>>4;
}else if (radix==8){
num=num>>3;
}else if (radix==2){
num=num>>1;
}
}
return count;
}
//转化成字符串的方法
public static String turnString(int []chars){
String str="";
for (int i=0;i<chars.length ;i++ ){
char []charsNew=new char[chars.length];
charsNew[i]=replace(chars[i]);
str=str+charsNew[i];
}
return str;
}
//“替换”方法。
public static char replace(int index){
char [] chars=new char[]{'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
return chars[index];
}
}
H.普通查找
class FindCommon
{
public static void main(String[] args){
int []arr=new int[]{1,15,29,36,43,55,69,75,86,91,106};
System.out.println(finding(arr,91));
}
public static int finding(int []arr,int num){
for(int i=0;i<arr.length;i++){
if(num==arr[i]){
return i;
}
}
return -1;
}
}
I.折半查找
class FindHalf2
{
public static void main(String[] args){
int []arr=new int[]{1,15,29,36,43,55,69,75,86,91,106};
System.out.println(finding(arr,1));
}
public static int finding(int []arr,int num){
int min=0,max=arr.length-1;
int mid=(min+max)/2;
while (min<=max){
if (arr[mid]==num){
return mid;
}else if (arr[mid]<num){
min=mid+1;
mid=(min+max)/2;
}else if (arr[mid]>num){
max=mid-1;
mid=(min+max)/2;
}
}
return -1;
}
}
数组练习二-----双重循环
A.选择排序
class Select
{
public static void main(String[] args){
int []arr=new int[]{1,115,9,336,413,535,169,715,386,191,1206};
selectSort(arr);
for (int i=0;i<arr.length ;i++ ){
System.out.print(arr[i]+" ");
}
}
public static void selectSort(int []arr){
int temp;
for (int i=0;i<arr.length ;i++ ){
for(int j=0;j<arr.length-1;j++){
if(arr[i]>arr[j]){
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
}
}
B.冒泡排序 //利用打印三角形的思路!亮点!!
class Bubble
{
public static void main(String[] args){
int []arr=new int[]{1,115,9,336,413,535,169,715,386,191,1206};
bubbleSort(arr);
for (int i=0;i<arr.length ;i++ ){
System.out.print(arr[i]+" ");
}
}
public static void bubbleSort(int []arr){
int temp;
for (int i=0;i<arr.length ;i++ ){
for(int j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
}
《数组综合练习》
数组练习一-----单重循环
A.数组遍历
class HomeWork//数组遍历
{
public static void main(String[] args){
char [] chars=new char[]{'A','B','C','D','E','F','G','H','I','J'};
ergodic(chars);
}
public static void ergodic(char [] chars){
for (int i=0;i<chars.length ;i++ ){
System.out.print(chars[i]+" ");
}
}
B.求数组中的最小值
class HomeWork
{
public static void main(String[] args){
int [] arr=new int[]{16,25,49,36,59,84,97,67,48,99};
System.out.println("The min is "+findMin(arr));
}
public static int findMin(int []arr){
int min=arr[0];
for (int i=0;i<arr.length;i++ ){
if (arr[i]<min){
min=arr[i];
}
}
return min;
}
}
C.求数组元素的和
class HomeWork
{
public static void main(String[] args){
int[]arr=new int[]{1,2,3,4,5,6,7,8,9,10};
System.out.println(sum(arr));
}
public static int sum(int []arr){
int summ=1;
for (int i=0;i<arr.length ;i++ ){
summ+=arr[i];
}
return summ;
}
}
D.数组转成字符串
class ArraryToString
{
public static void main(String[] args){
char [] chars=new char[]{'I',' ','L','o','v','e',' ','Y','o','u'};
String str=turnString(chars);
System.out.println(str);
}
public static String turnString(char []chars){//写方法前一定要明确方法的输入输出的类型或参数!!
String str="";
for (int i=0;i<chars.length ;i++ ){
str=str+chars[i];
}
return str;
}
}
E.根据下标找数组中的元素
class ArraryIndexFindElement
//数组中根据下标寻找元素。index:下标;element:元素
{
public static void main(String[] args){
char [] chars=new char[]{'I',' ','L','o','v','e',' ','Y','o','u'};
char answer=finding(chars,5);
System.out.println(answer);
}
public static char finding(char[] chars,int index){
//要注意防止数组越界异常!!!!
if(index<0||index>chars.length-1){
return ' ';
}
return chars[index];
}
}
F.反转数组
class ArraryReversal//数组反转
{
public static void main(String[] args){
char []chars=new char[]{'I',' ','L','o','v','e',' ','Y','o','u'};
print(chars);
System.out.println("*************");
reversal(chars);
print(chars);
}
public static void reversal(char [] chars){//交换方法
char temp;
for(int min=0,max=chars.length-1;min<max;min++,max--){
temp=chars[min];
chars[min]=chars[max];
chars[max]=temp;
}
}
public static void print(char []chars){//打印方法
for (int i=0;i<chars.length ;i++ ){
System.out.print(chars[i]);
}
System.out.println("");
}
}
G.进制转换,这个思维非常好!!用到位运算,补码计算!
public static void Bridge(int num,int radix){
if (radix==16){
toTurn(num,16,15,4);
}else if (radix==8){
toTurn(num,8,7,3);
}else if (radix==2){
toTurn(num,2,1,1);
}
}
//转化方法
public static void toTurn(int num,int radix,int Yu,int goBit){
int count=knowCount(num,radix);
int []arrNum=new int[count];
for(int i=0;i<count;i++){
arrNum[count-1-i]=num&Yu;//倒序存放数组,避免之后反转
num=num>>goBit;
}
System.out.println(turnString(arrNum));
}
//通过位运算的方法判断这个数字能拆成多少个4位二进制
public static int knowCount(int num,int radix){
int count=0;
for (;num!=0; count++){//count 就是位数
if (radix==16){
num=num>>4;
}else if (radix==8){
num=num>>3;
}else if (radix==2){
num=num>>1;
}
}
return count;
}
//转化成字符串的方法
public static String turnString(int []chars){
String str="";
for (int i=0;i<chars.length ;i++ ){
char []charsNew=new char[chars.length];
charsNew[i]=replace(chars[i]);
str=str+charsNew[i];
}
return str;
}
//“替换”方法。
public static char replace(int index){
char [] chars=new char[]{'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
return chars[index];
}
}
H.普通查找
class FindCommon
{
public static void main(String[] args){
int []arr=new int[]{1,15,29,36,43,55,69,75,86,91,106};
System.out.println(finding(arr,91));
}
public static int finding(int []arr,int num){
for(int i=0;i<arr.length;i++){
if(num==arr[i]){
return i;
}
}
return -1;
}
}
I.折半查找
class FindHalf2
{
public static void main(String[] args){
int []arr=new int[]{1,15,29,36,43,55,69,75,86,91,106};
System.out.println(finding(arr,1));
}
public static int finding(int []arr,int num){
int min=0,max=arr.length-1;
int mid=(min+max)/2;
while (min<=max){
if (arr[mid]==num){
return mid;
}else if (arr[mid]<num){
min=mid+1;
mid=(min+max)/2;
}else if (arr[mid]>num){
max=mid-1;
mid=(min+max)/2;
}
}
return -1;
}
}
数组练习二-----双重循环
A.选择排序
class Select
{
public static void main(String[] args){
int []arr=new int[]{1,115,9,336,413,535,169,715,386,191,1206};
selectSort(arr);
for (int i=0;i<arr.length ;i++ ){
System.out.print(arr[i]+" ");
}
}
public static void selectSort(int []arr){
int temp;
for (int i=0;i<arr.length ;i++ ){
for(int j=0;j<arr.length-1;j++){
if(arr[i]>arr[j]){
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
}
}
B.冒泡排序 //利用打印三角形的思路!亮点!!
class Bubble
{
public static void main(String[] args){
int []arr=new int[]{1,115,9,336,413,535,169,715,386,191,1206};
bubbleSort(arr);
for (int i=0;i<arr.length ;i++ ){
System.out.print(arr[i]+" ");
}
}
public static void bubbleSort(int []arr){
int temp;
for (int i=0;i<arr.length ;i++ ){
for(int j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
}