zoukankan      html  css  js  c++  java
  • 1数组的插入和删除的算法运用

     输入五个歌曲名,按首字母进行依次升幂排序

       输入数字1 表示插入一首歌曲名

       输入数字2可以表示删除一首歌曲名

       输入数字0   退出

    一个数组有序,添加一个元素后,数组依然有序。

    一个数组有序,删除一个元素后,数组依然有序。

    程序如下

    import java.util.Scanner;
    
    public class test03{
        //申请一个整型类变量
        static int number=6;
        //申请一个类引用变量
        static String[] music =new  String[number]; 
        //申请一个字符串用变量
        static String M="000"; 
        
        //插入一个字符串方法
        public static String[] index_add(String [] MUSIC_0){
                //记录一个位置变量  如果是负数这表示遍历完没有相应的位置放到最后
                int al=-1;         // 如果是正数表示有相应位置要插入
                Scanner sc1 = new Scanner(System.in);
                M = sc1.next();
                //申请一个插入字符串用变量
                System.out.println(number); 
                //申请字符串数组  number+1表示需要多申请一个字符串存放增加的变量
                String[] M_new = new String[number+1];
                
                //把之前歌名复制到新字符串数组 
                for(int i =0;i<number;i++){
                        M_new[i]=MUSIC_0[i];
                    }
                //遍历歌名的首字符需要插入位置
                for(int i=0;i<number;i++){
                        if(M.charAt(0)<=MUSIC_0[i].charAt(0)){
                            al=i;
                            break;
                        }    
                    }
                //如果是负数这表示遍历完没有相应插入的位置,放到最后
                if(al<0){
                        M_new[number]=M;
                        for(String i:M_new)
                        {
                            System.out.print(i+'	');
                        }
                    }else{ // 如果是正数表示有相应位置要插入     
                        for(int f=number;f>al;f-- ){
                        M_new[f]=M_new[f-1];  // 依次后移
                        }
                        M_new[al]=M;//插入
                        for(String i:M_new)
                        {
                            System.out.print(i+'	');
                        }
                        
                        System.out.println();
                    }
                  number++; //数组增加一位 
                  return M_new;//返回值
            }
            
            //删除一个字符串方法
            public static String[] index_delete(String[] a){
                //记录删除的位置
                int al=-1;
                
                Scanner sc1 = new Scanner(System.in);
                M = sc1.next();
                //遍历歌名的首字符需要删除位置
                for(int f=0;f<number;f++){
                        if(a[f].charAt(0)==M.charAt(0))
                        {    
                            al=f;
                            break;
                        }
                    }
                //申请字符串数组  --number表示需要多申请一个字符串存放增加的变量
                String[] M_new = new String[--number];    
                if(al<0){//
                        System.out.println("找不到相应歌曲"+'	');
                    }
                    else{
                        
                        int j=0;
                        //删除一位字符串,重新复制到新的数组
                        for(int f=0;f<number;f++){
                                
                            if(f==al)
                            {    
                                j++;//删除位置 多加加一表示跳过复制
                            }
                            M_new[f]=a[j++];
                            
                        }
                        
                        for(String i:M_new)
                        {
                            System.out.print(i+'	');
                        }
                        System.out.println("删除成功");
                    }
                    
                    return M_new;
                
            }
        public static void main(String[] args){
             Scanner sc = new Scanner(System.in);
             
                    
            for(int i=0;i<music.length;i++){
                System.out.println("请输入第"+i+"歌曲名称");
                music[i] = sc.next();
            }
            String a;
            //每个字符串的首字母进行排序   冒泡排序
            for(int j=0;j<music.length-1;j++){
                for(int i=0; i<music.length-j-1;i++){
                    if(music[i].charAt(0)>music[i+1].charAt(0)){
                        a = music[i+1];
                        music[i+1]=music[i];
                        music[i]=a;
                }
             }
                
            }
            System.out.print('
    ');
            for(String i:music){
                System.out.print(i+'	');
            }
            System.out.print('
    ');
            byte w=0;
            byte over=1;
            for(int i=0;i<6;){
            
            System.out.print("输入1数字增加一首歌曲名"+'	');
            System.out.print("输入2数字删除一首歌曲名"+'	');
            System.out.print("输入0退出"+'	');
            System.out.print('
    ');
            w = sc.nextByte();
            switch(w){   //输入1表示增加一首歌曲
                case 1:
                    System.out.println("请输入歌曲名"+'	');
                        music=index_add(music);//music 引用方法返回的数组地址
                    break;
                case 2:  //输入2数字删除一首歌曲名
                    System.out.println("请输入歌曲名"+'	');
                    
                        music=index_delete(music);//music 引用方法返回的数组地址
                    break;
                case 0:
                    System.out.println("再次输入0结束操作");
                    over=sc.nextByte();  //真正的退出
                    break;
            }
            
            if(over==0){
                break;
                }
            } 
        }
    }
      1 import java.util.Scanner;
      2 
      3 public class test03{
      4     //申请一个整型类变量
      5     static int number=6;
      6     //申请一个类引用变量
      7     static String[] music =new  String[number]; 
      8     //申请一个字符串用变量
      9     static String M="000"; 
     10     
     11     //插入一个字符串方法
     12     public static String[] index_add(String [] MUSIC_0){
     13             //记录一个位置变量  如果是负数这表示遍历完没有相应的位置放到最后
     14             int al=-1;         // 如果是正数表示有相应位置要插入
     15             Scanner sc1 = new Scanner(System.in);
     16             M = sc1.next();
     17             //申请一个插入字符串用变量
     18             System.out.println(number); 
     19             //申请字符串数组  number+1表示需要多申请一个字符串存放增加的变量
     20             String[] M_new = new String[number+1];
     21             
     22             //把之前歌名复制到新字符串数组 
     23             for(int i =0;i<number;i++){
     24                     M_new[i]=MUSIC_0[i];
     25                 }
     26             //遍历歌名的首字符需要插入位置
     27             for(int i=0;i<number;i++){
     28                     if(M.charAt(0)<=MUSIC_0[i].charAt(0)){
     29                         al=i;
     30                         break;
     31                     }    
     32                 }
     33             //如果是负数这表示遍历完没有相应插入的位置,放到最后
     34             if(al<0){
     35                     M_new[number]=M;
     36                     for(String i:M_new)
     37                     {
     38                         System.out.print(i+'	');
     39                     }
     40                 }else{ // 如果是正数表示有相应位置要插入     
     41                     for(int f=number;f>al;f-- ){
     42                     M_new[f]=M_new[f-1];  // 依次后移
     43                     }
     44                     M_new[al]=M;//插入
     45                     for(String i:M_new)
     46                     {
     47                         System.out.print(i+'	');
     48                     }
     49                     
     50                     System.out.println();
     51                 }
     52               number++; //数组增加一位 
     53               return M_new;//返回值
     54         }
     55         
     56         //删除一个字符串方法
     57         public static String[] index_delete(String[] a){
     58             //记录删除的位置
     59             int al=-1;
     60             
     61             Scanner sc1 = new Scanner(System.in);
     62             M = sc1.next();
     63             //遍历歌名的首字符需要删除位置
     64             for(int f=0;f<number;f++){
     65                     if(a[f].charAt(0)==M.charAt(0))
     66                     {    
     67                         al=f;
     68                         break;
     69                     }
     70                 }
     71             //申请字符串数组  --number表示需要多申请一个字符串存放增加的变量
     72             String[] M_new = new String[--number];    
     73             if(al<0){//
     74                     System.out.println("找不到相应歌曲"+'	');
     75                 }
     76                 else{
     77                     
     78                     int j=0;
     79                     //删除一位字符串,重新复制到新的数组
     80                     for(int f=0;f<number;f++){
     81                             
     82                         if(f==al)
     83                         {    
     84                             j++;//删除位置 多加加一表示跳过复制
     85                         }
     86                         M_new[f]=a[j++];
     87                         
     88                     }
     89                     
     90                     for(String i:M_new)
     91                     {
     92                         System.out.print(i+'	');
     93                     }
     94                     System.out.println("删除成功");
     95                 }
     96                 
     97                 return M_new;
     98             
     99         }
    100     public static void main(String[] args){
    101          Scanner sc = new Scanner(System.in);
    102          
    103                 
    104         for(int i=0;i<music.length;i++){
    105             System.out.println("请输入第"+i+"歌曲名称");
    106             music[i] = sc.next();
    107         }
    108         String a;
    109         //每个字符串的首字母进行排序   冒泡排序
    110         for(int j=0;j<music.length-1;j++){
    111             for(int i=0; i<music.length-j-1;i++){
    112                 if(music[i].charAt(0)>music[i+1].charAt(0)){
    113                     a = music[i+1];
    114                     music[i+1]=music[i];
    115                     music[i]=a;
    116             }
    117          }
    118             
    119         }
    120         System.out.print('
    ');
    121         for(String i:music){
    122             System.out.print(i+'	');
    123         }
    124         System.out.print('
    ');
    125         byte w=0;
    126         byte over=1;
    127         for(int i=0;i<6;){
    128         
    129         System.out.print("输入1数字增加一首歌曲名"+'	');
    130         System.out.print("输入2数字删除一首歌曲名"+'	');
    131         System.out.print("输入0退出"+'	');
    132         System.out.print('
    ');
    133         w = sc.nextByte();
    134         switch(w){   //输入1表示增加一首歌曲
    135             case 1:
    136                 System.out.println("请输入歌曲名"+'	');
    137                     music=index_add(music);//music 引用方法返回的数组地址
    138                 break;
    139             case 2:  //输入2数字删除一首歌曲名
    140                 System.out.println("请输入歌曲名"+'	');
    141                 
    142                     music=index_delete(music);//music 引用方法返回的数组地址
    143                 break;
    144             case 0:
    145                 System.out.println("再次输入0结束操作");
    146                 over=sc.nextByte();  //真正的退出
    147                 break;
    148         }
    149         
    150         if(over==0){
    151             break;
    152             }
    153         } 
    154     }
    155 }
    View Code
  • 相关阅读:
    模块化、结构化的代码,何尝不是在讲人生
    DOS操作文件或文件夹
    OSQL
    DOS 命令大全
    Red Tea
    SetInterval_1
    SetInterval
    分库分表——Sharding-Sphere
    线上redis热key问题
    线上redis bgsave导致服务响应延迟
  • 原文地址:https://www.cnblogs.com/dedema/p/10732062.html
Copyright © 2011-2022 走看看