精华内容
下载资源
问答
  • iOS开发·必会的算法操作:字符串数组排序 模型对象数组排序
  • 字符串数组排序

    2019-06-28 12:57:59
    创建一个长度是8的字符串数组,使用8个长度是5的随机字符串初始化这个数组,对这个数组进行排序,按照每个字符串的首字母排序(无视大小写) 注1: 不能使用Arrays.sort() 要自己写 注2: 无视大小写,即 Axxxx 和 ...

    题目:

    创建一个长度是8的字符串数组,使用8个长度是5的随机字符串初始化这个数组,对这个数组进行排序,按照每个字符串的首字母排序(无视大小写)
    注1: 不能使用Arrays.sort() 要自己写
    注2: 无视大小写,即 Axxxx 和 axxxxx 没有先后顺序

    下面是代码实现:

    public static void main(String[] args) {
    
            char[] c = new char[5];
    
            String[] s = new String[8];
            int start = '0';
            int end = 'z' + 1;
            String temp;
    
            for (int i = 0; i < s.length; i++) {
                for (int j = 0; j < c.length; j++) {
                    while (true) {
                        char c1 = (char) (Math.random() * (end - start) + start);
                        if (Character.isLetter(c1) || Character.isDigit(c1)) {
                            c[j] = c1;
                            break;
                        }
                    }
                }
                String str = new String(c);
                s[i] = str;
            }
    
            for (int i = 0; i < s.length; i++) {
                System.out.println(s[i]);
            }
            System.out.println("-----排序完成------");
    
            for (int i = 0; i < s.length; i++) {
                for (int j = 0; j < s.length - i - 1; j++) {
                    char fir = s[j].charAt(0);
                    char sec = s[j + 1].charAt(0);
                    if (Character.toLowerCase(fir) > Character.toLowerCase(sec)) {
                        temp = s[j];
                        s[j] = s[j + 1];
                        s[j + 1] = temp;
                    }
                }
            }
    
    
            for (int i = 0; i < s.length; i++) {
                System.out.println(s[i]);
            }
    
        }

     

    展开全文
  • 允许用户使用字符串数组进行演奏。他们可以将字符串添加到数组中,从数组中删除字符串,在数组中搜索字符串,最终他们将能够对数组进行排序排序使我很困惑。我尝试了几种不同的方法。第一种方法是将数组转换为...

    允许用户使用字符串数组进行演奏。他们可以将字符串添加到数组中,从数组中删除字符串,在数组中搜索字符串,最终他们将能够对数组进行排序。排序使我很困惑。我尝试了几种不同的方法。第一种方法是将数组转换为ArrayList并使用Collections对ArrayList进行排序,然后将其转换回静态类数组。没用

    我尝试的第二种方法是遍历数组,并尝试仅对用户添加的字符串进行排序,而不是对数组中的所有内容进行排序(因为数组中存在一些空值)。也许我应该遍历数组,然后将非null值存储到可以排序的新数组中?但是,如果要在对新数组排序后添加更多字符串怎么办?这就是为什么我停止使用第二种解决方案的原因。第三次尝试是在我的数组上使用Arrays.sort(),但是由于某种原因,它不起作用。

    这是例外:

    Exception in thread "main" java.lang.NullPointerException

    at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:290)

    at java.util.ComparableTimSort.sort(ComparableTimSort.java:157)

    at java.util.ComparableTimSort.sort(ComparableTimSort.java:146)

    at java.util.Arrays.sort(Arrays.java:472)

    at java.util.Collections.sort(Collections.java:155)

    at testingSearch.sortArray(testingSearch.java:93)

    at testingSearch.main(testingSearch.java:42)

    这是我的代码:

    import java.util.Scanner;

    import java.util.Arrays;

    import java.util.ArrayList;

    import java.util.Collections;

    import java.util.List;

    public class testingSearch {

    static String[] strArray;

    static {

    strArray = new String[5];

    }

    public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    while(true){

    System.out.println("1. Add string to the string array.");

    System.out.println("2. Remove string from the string array.");

    System.out.println("3. Display strings in string array.");

    System.out.println("4. Search the string array for a string.");

    System.out.println("5. Sort the strings in the string array.");

    int userChoice = 0;

    userChoice = input.nextInt();

    switch(userChoice) {

    case 1:

    addString();

    break;

    case 2:

    removeString();

    break;

    case 3:

    displayStrings();

    break;

    case 4:

    searchArray();

    break;

    case 5:

    sortArray();

    break;

    }

    }

    }

    public static void addString(){

    Scanner input = new Scanner(System.in);

    System.out.println("What string do you want to add?");

    String userInput;

    userInput = input.nextLine();

    ArrayList stringList = new ArrayList (Arrays.asList(strArray));

    stringList.add(userInput);

    strArray = stringList.toArray(strArray);

    }

    public static void removeString(){

    Scanner input = new Scanner(System.in);

    System.out.println("What string do you want to remove?");

    String userInput;

    userInput = input.nextLine();

    ArrayList stringList = new ArrayList (Arrays.asList(strArray));

    stringList.remove(userInput);

    strArray = stringList.toArray(strArray);

    }

    public static void displayStrings(){

    for (String s: strArray){

    if (!(s == null)){

    System.out.println(s);

    }

    }

    }

    public static void searchArray(){

    Scanner input = new Scanner(System.in);

    System.out.println("What string do you want to search the array for?");

    String userInput;

    userInput = input.nextLine();

    ArrayList stringList = new ArrayList(Arrays.asList(strArray));

    if (stringList.contains(userInput)){

    System.out.println("The string array contains that string!");

    }

    else {

    System.out.println("The string array does not contain that string...");

    }

    }

    public static void sortArray(){

    /*ArrayList stringList = new ArrayList (Arrays.asList(strArray));

    Collections.sort(stringList);

    strArray = stringList.toArray(strArray);*/

    /*for (String s: strArray) {

    if (!(s == null)){

    Arrays.sort(strArray);

    }

    }*/

    List stringList = new ArrayList(Arrays.asList(strArray));

    Collections.sort(stringList);

    strArray = stringList.toArray(strArray);

    //Arrays.sort(strArray);

    }

    }

    展开全文
  • C 字符串数组排序的小例子,需要的朋友可以参考一下
  • 在Java环境下,对字符串数组或者对字符串排序都是一件很容易的事情,只要调用java.util包下的Arrays类的sort方法即可对其排序。有没有想过,我们自己也可以利用排序* 一趟快速排序是:*1,随机产生一数列,选取第一...

    在Java环境下,对字符串数组或者对字符串排序都是一件很容易的事情,只要调用java.util包下的Arrays类的sort方法即可对其排序。

    有没有想过,我们自己也可以利用排序

    * 一趟快速排序是:

    *1,随机产生一数列,选取第一个数(这里也可选其他的数)作为比较的基石,假设这个数为X,这样X=A[0];设两个变量i=0,j=n-1;n是这个数列的长度

    *2,从前面开始找,找到第一个比A[0]大的数,找到了就与X交换

    *3,从后面开始找,找到第一个比A[0]小的数,找到了就与X交换

    *4,重复步骤2,3,直到i=j;

    *这样一趟快速排序就完成了;第一趟完成之后,X左边的数就全部小于X了,X右边的数九全部大于X,然后采用递归方式对X左边的数和X右边的数进行快速排序。

    字符串数排序代码如下:

    package com.org.tool;

    /**

    * 字符串数组排序,利用快排的思想

    * @author xiaobangsky

    * time:2014-10-13

    *

    */

    public class P4_8 {

    public static void quickSort(String[] pData,int left,int right)

    {

    int i,j;

    String first,temp;

    i = left;

    j = right;

    first = pData[left]; //这里选其他的数也行,不过一般选第一个

    //一趟快速排序

    while(true)

    {

    //从第二个数开始找大于中枢的数 ,从前面开始找大于pData[left]的数

    while((++i)

    //从最后一个数开始找第一个小于中枢pData[left]的数

    while((--j)>left && pData[j].compareTo(first)>0);

    if(i>=j)

    break;

    //交换两边找到的数

    temp = pData[i];

    pData[i] = pData[j];

    pData[j] = temp;

    }

    //交换中枢

    pData[left] = pData[j];

    pData[j] = first;

    //递归快排中枢左边的数据

    if(left

    quickSort(pData,left,j);

    //递归快排中枢右边的数据

    if(right>i)

    quickSort(pData,i,right);

    }

    public static void main(String[] args) {

    String[] arr = new String[]{"one","onad","Dream","Beijing","Olympic"};

    quickSort(arr, 0, 5);

    for(String s:arr){

    System.out.print(s+" ");

    }

    }

    }

    字符串排序代码如下:package com.org.tool;

    /**

    * 字符排序,快排思想

    * @author xiaobangsky

    * time:2014-10-13

    */

    public class P4_9 {

    public static void quickSort(char[] pData,int left,int right)

    {

    int first,i,j;

    char temp;

    i = left;

    j = right;

    first = pData[left]; //这里选其他的数也行,不过一般选第一个

    //一趟快速排序

    while(true)

    {

    //从第二个数开始找大于中枢的数 ,从前面开始找大于pData[left]的数

    while((++i)

    //从最后一个数开始找第一个小于中枢pData[left]的数

    while((--j)>left && pData[j]>first);

    if(i>=j)

    break;

    //交换两边找到的数

    temp = pData[i];

    pData[i] = pData[j];

    pData[j] = temp;

    }

    //交换中枢

    pData[left] = pData[j];

    pData[j] = (char) first;

    //递归快排中枢左边的数据

    if(left

    quickSort(pData,left,j);

    //递归快排中枢右边的数据

    if(right>i)

    quickSort(pData,i,right);

    }

    public static void main(String[] args) {

    char[] arr = "xarvfwegfe".toCharArray();

    quickSort(arr, 0, 10);

    for(char s:arr){

    System.out.print(s);

    }

    }

    }

    这样就完成了。

    展开全文
  • Java字符串数组排序

    千次阅读 2019-04-22 11:10:30
    利用一个字符串数组排序讲解anonymous class,method reference以及lambda expression。后面代码体现了,inner class的lambda可以用整个outer class的field,但是必须是final类型才可以直接食用

    对一个字符串数组排序

    首先生成一个字符串数组

    String[] stringArray = { "Barbara", "James", "Mary", "John",
        		    "Patricia", "Robert", "Michael", "Linda" };
    

    方法1 method reference

    Java doc中对method reference的描述

        	Arrays.sort(stringArray, String::compareToIgnoreCase);
        	for(String s: stringArray)
        		System.out.print(s + "  ");
    

    方法2 lambda

    通过在comparator(functional interface) 出使用lambda expression来进行排序

    funtional interface, 只有一个abstract method,但是可以有多个default 以及static。这里也是体现了java interface的意义,即告诉coder这个函数是干嘛。打个比方,你看到KFC的招牌就知道里面是卖炸鸡的,不管后来在任何城市国家都是这样。但是假如没有这块KFC的招牌,你每次进去都要问,有没有炸鸡,有没有甜筒,有没有汉堡…尽管每个KFC店做的口味(function behaviour)不同,但是你还是知道这就是junk food

        	Arrays.sort(stringArray,(a,b)->{return  -a.compareTo(b);});
        	for(String s: stringArray)
        		System.out.print(s + "  ");
        	Sys.out.println();
    

    方法3 # class

    为什么叫anonymous呢,因为他没有“名字”。

    首先,我们要发现,这个叫“class”而不是”interface“了。假如不采用这种方法,我们需要先把comparator继承,然后再实例化,匿名类帮我们省去了这个过程。他直接使用interface,或者将interface储存在一个variable中

    Comparator c = new Comparator<String>() {
    			@Override
    			public int compare(String o1, String o2) {
    				// TODO Auto-generated method stub
    				return o1.compareTo(o2);
    			}
    
        	Arrays.sort(stringArray,new Comparator<String>() {
    
    			@Override
    			public int compare(String o1, String o2) {
    				// TODO Auto-generated method stub
    				return o1.compareTo(o2);
    			}
        		
    		});
    

    import java.util.function

    这里包含了大量functional interface

    这里再补充一个lambda使用的例子

    package lamdba;
    
    import java.util.Arrays;import java.util.Comparator;
    import java.util.function.Consumer;
    
    // 自己定义一个generic functional interface
    @FunctionalInterface
    interface f<T>{
    	void apply(T t);
    }
    
    public class LambdaScopeTest {
    
        public int x = 0;
    
        class FirstLevel {
    
            public int x = 1;
    
            void methodInFirstLevel(int x) {
                
                // The following statement causes the compiler to generate
                // the error "local variables referenced from a lambda expression
                // must be final or effectively final" in statement A:
                //
                //x = 99;
            	
            	// 如果有了上面的x = 99,下面会报错,因为x必须是final类型,anonymous class 传入的参数也不能叫“x”
                
            	f<Integer> tF = Z -> {System.out.println(Z*x);};
            	
                Consumer<Integer> myConsumer = (y) -> 
                {
                    System.out.println("x = " + x); // Statement A
                    System.out.println("y = " + y);
                    System.out.println("this.x = " + this.x);
                    System.out.println("LambdaScopeTest.this.x = " +
                        LambdaScopeTest.this.x);
                };
    
                myConsumer.accept(x);
                tF.apply(10);
            }
        }
    
        public static void main(String... args) {
            LambdaScopeTest st = new LambdaScopeTest();
            LambdaScopeTest.FirstLevel fl = st.new FirstLevel();
            fl.methodInFirstLevel(23);
        }  	
    }
    
    展开全文
  • 字符串数组排序问题

    2018-12-10 12:02:48
    5:字符串数组排序问题 查看 提交 统计 提问 总时间限制:  1000ms   内存限制:  65536kB 描述 给定一组字符串,按指定的排序方式输出这些字符串。排序可是自然顺序(inc)、自然逆序(dec)、忽略大小写...
  • 字符串数组排序(指针数组) Description 输入三个字符串,按由小到大的顺序输出,字符串长度小于1000 Input 3行字符串 Output 按照从小到大输出成3行 Sample Input cde afg abc Sample Output abc afg cde 具体...
  • 2752:字符串数组排序问题 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一组字符串,按指定的排序方式输出这些字符串。排序可是自然顺序(inc)、自然逆序(dec)、忽略大小写顺序(ncinc)、忽略大小写逆序...
  • 快速排序算法在字符串数组排序中的应用
  • 随机字符串数组排序

    2020-04-09 17:07:37
    要求:创建一个长度是8的字符串数组 使用8个长度是5的随机字符串初始化这个数组 对这个数组进行排序,按照每个字符串的首字母排序(无视大小写) 注1: 不能使用Arrays.sort() 要自己写 注2: 无视大小写,即 Axxxx 和...
  • java字符串数组排序

    2020-01-06 15:15:16
    /**创建一个长度是8的字符串数组 使用8个长度是5的随机字符串初始化这个数组 对这个数组进行排序,按照每个字符串的首字母排序(无视大小写) 注1: 不能使用Arrays.sort() 要自己写 注2: 无视大小写,即 Axxxx 和 ...
  • 创建一个长度是8的字符串数组 使用8个长度是5的随机字符串初始化这个数组 对这个数组进行排序,按照每个字符串的首字母排序(无视大小写) 注1: 不能使用Arrays.sort() 要自己写 注2: 无视大小写,即 Axxxx 和 ...
  • 为普通数组和对象数组排序,对象数组排序时,可指定排序所依据的对象属性,汉字将以汉语拼音为序。
  • //字符串数组排序的快速排序实现 public class CharQuickSort {//快速排序的一次划分 public static int charPartition(String a[], int left, int right){ int l,r; String temp; ...
  • 百练_2757字符串数组排序问题

    千次阅读 2017-04-22 14:08:15
    POJ2752:字符串数组排序问题 描述 给定一组字符串,按指定的排序方式输出这些字符串。排序可是自然顺序(inc)、自然逆序(dec)、忽略大小写顺序(ncinc)、忽略大小写逆序(ncdec)等。 输入 输入有多行,第一...
  • C语言——字符串数组排序

    千次阅读 2019-03-17 23:37:21
    题目:利用指针数组对形参ss所指字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。ss所指字符串数组中有N个字符串,且串小于M。 代码: #include&lt;stdio.h&gt; #include&lt;string.h&...
  • 创建一个长度是8的字符串数组 使用8个长度是5的随机字符串初始化这个数组 对这个数组进行排序,按照每个字符串的首字母排序(无视大小写) 注1: 不能使用Arrays.sort() 要自己写 注2: 无视大小写,即 Axxxx 和 ...
  • C语言中字符串数组排序问题

    万次阅读 多人点赞 2019-05-31 22:30:49
    在用C语言解决字符串排序问题时,遇到的些问题,记录一下; 字符串排序与平常的数字排序方法,碰壁的地方在于做 ‘交换 ’ 这一步; 1. 这是用选择排序法对一个整型数组进行从大到小的排序; //选择排序法 #include...
  • 字符串数组排序

    2019-10-04 22:49:06
    或者说我们需要一个固定的顺序,比如我们从NSDictionary里面拿到的key 数组,它就是一个无序的数组,这时候我们需要对字符串进行一个简单的排序,保证每次取到的数组里面的字符串顺序一样,这时候就用到了排序了,...
  • python实现由大小写字母组成的字符串数组排序 google笔试题 题目描述: 有一个由大小 写字母组成的字符串,请对它进行重新组合,使得其中的所有小写字母排 在大写字母的前面(大写字母或小写字母之间不要求保持原来...
  • C#字符串数组排序

    2020-06-24 10:38:42
    //排序只带字符数组,不带数字的 From:www.uzhanbao.com privatestring[] aa ={ "a ", "c ", "b "}; Array.Sort(aa); MessageBox.Show(aa[0]); MessageBox.Show(aa[1]); MessageBox.Show...
  • 大家是否遇到这种情况,数据很大,想要进行排序,今天给大家讲解的就是MySQL的数组排序,通过mysql的数组函数对元素进行一定的排序。《php和MySQLWeb开发》介绍了如何创建可交互的Web站点,包括从最简单的订单表单到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,860
精华内容 3,944
关键字:

字符串数组排序