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+'\t');
                    }
                }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+'\t');
                    }
                    
                    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("找不到相应歌曲"+'\t');
                }
                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+'\t');
                    }
                    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('\n');
        for(String i:music){
            System.out.print(i+'\t');
        }
        System.out.print('\n');
        byte w=0;
        byte over=1;
        for(int i=0;i<6;){
        
        System.out.print("输入1数字增加一首歌曲名"+'\t');
        System.out.print("输入2数字删除一首歌曲名"+'\t');
        System.out.print("输入0退出"+'\t');
        System.out.print('\n');
        w = sc.nextByte();
        switch(w){   //输入1表示增加一首歌曲
            case 1:
                System.out.println("请输入歌曲名"+'\t');
                    music=index_add(music);//music 引用方法返回的数组地址
                break;
            case 2:  //输入2数字删除一首歌曲名
                System.out.println("请输入歌曲名"+'\t');
                
                    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+'\t');
 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+'\t');
 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("找不到相应歌曲"+'\t');
 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+'\t');
 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('\n');
121         for(String i:music){
122             System.out.print(i+'\t');
123         }
124         System.out.print('\n');
125         byte w=0;
126         byte over=1;
127         for(int i=0;i<6;){
128         
129         System.out.print("输入1数字增加一首歌曲名"+'\t');
130         System.out.print("输入2数字删除一首歌曲名"+'\t');
131         System.out.print("输入0退出"+'\t');
132         System.out.print('\n');
133         w = sc.nextByte();
134         switch(w){   //输入1表示增加一首歌曲
135             case 1:
136                 System.out.println("请输入歌曲名"+'\t');
137                     music=index_add(music);//music 引用方法返回的数组地址
138                 break;
139             case 2:  //输入2数字删除一首歌曲名
140                 System.out.println("请输入歌曲名"+'\t');
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

 

posted on 2019-04-18 20:23  德德玛  阅读(560)  评论(0编辑  收藏  举报