精华内容
下载资源
问答
  • 慕标琳琳最近也碰到了要对汉字排序的问题,Collator效果还不错,参考ComparingUTF-8String$name=[...];(new\Collator('zh-CN'))->asort($name);var_dump($name);实际前后:0=>'袁次阳'1=>'段纪明'2=>'朱...

    a1986e1c5a8d103ddd048db13faa241f.png

    慕标琳琳

    最近也碰到了要对汉字排序的问题,Collator效果还不错,参考ComparingUTF-8String$name=[...];(new\Collator('zh-CN'))->asort($name);var_dump($name);实际前后:0=>'袁次阳'1=>'段纪明'2=>'朱公伟'3=>'朱文渊'4=>'朱符'5=>'卢子干'6=>'皇甫义真'7=>'阎忠'8=>'王子师'9=>'士孙君荣'10=>'荀慈明'11=>'黄世英孙'12=>'赵子柔'13=>'蔡伯喈'14=>'蔡文姬'15=>'杨文先'16=>'杨德祖'17=>'吴匡'18=>'马翁叔'19=>'郑公业'20=>'丁建阳'21=>'尉韩暹'22=>'胡才'23=>'李乐'24=>'杨奉'25=>'张雅叔'26=>'杨丑'27=>'眭白兔'28=>'蒋石'29=>'吉本'30=>'吉文然'31=>'吉思然'32=>'耿季行'33=>'司直韦晃'34=>'郎中张钧'=>13=>'蔡伯喈'14=>'蔡文姬'20=>'丁建阳'1=>'段纪明'32=>'耿季行'22=>'胡才'6=>'皇甫义真'11=>'黄世英孙'29=>'吉本'31=>'吉思然'30=>'吉文然'28=>'蒋石'34=>'郎中张钧'23=>'李乐'5=>'卢子干'18=>'马翁叔'9=>'士孙君荣'33=>'司直韦晃'27=>'眭白兔'8=>'王子师'21=>'尉韩暹'17=>'吴匡'10=>'荀慈明'7=>'阎忠'26=>'杨丑'16=>'杨德祖'24=>'杨奉'15=>'杨文先'0=>'袁次阳'25=>'张雅叔'12=>'赵子柔'19=>'郑公业'4=>'朱符'2=>'朱公伟'3=>'朱文渊'

    展开全文
  • Java基础之数组排序

    2020-08-04 21:14:29
    在学习数组排序之前,我们先来了解一下数组的遍历。 怎么打印数组呢? 大家可能会有疑问,数组不也是变量的一种吗,那么直接打印就好了呀 public class Text{ public static void main(String[] args){ int []...

    数组的遍历
    在学习数组的排序之前,我们先来了解一下数组的遍历。
    怎么打印数组呢?
    大家可能会有疑问,数组不也是变量的一种吗,那么直接打印就好了呀

    public class Text{
    	public static void main(String[] args){
    		int []nums = new int[]{12345};
    		System.out.println(nums);
    	}
    }
    

    这样就按照我们的想法,像打印变量一样把数组给打印出来。
    在这里插入图片描述
    大家发现,输出结果是一段不认识的字符串
    并不似我们想象的1,2,3,4,5
    为什么呢,因为数组是引用数据类型,存储的是地址,而这一串字符就是该数组在内存中开辟的空间的地址。
    那我们要怎么打印数组呢,这时我们想到了循环。

    public class Text{
    	public static void main(String[] args){
    		int []nums = new int[]{1,2,3,4,5};
    		for(int i=0;i<nums.length;i++){
    			System.out.print(nums[i]+" ");
    		}
    	}
    }
    

    这就是我们所说的,数组的遍历。
    数组的遍历还有一种形式,也是使用for循环,但是这种格式只能用与数组的遍历。

    public class Text{
    	public static void main(String[] args){
    		int []nums = new int[]{1,2,3,4,5};
    		for(int num:nums){
    			System.out.print(num+" ");
    		}
    	}
    }
    

    两个数的交换
    在代码里两个数怎么交换他们的值呢?肯定不能说你给我,我给你对吧,这样就造成了数据的覆盖,没有办法达到我们要的效果,所以我们就需要引用第三个值

    int a1 = 10;
    int a2 = 6;
    int b = a1;
    a1 = a2;
    a2 = b;
    

    数组的排序

    讲到这,才到了我们主角,排序
    数组只是一组相同数据类型的数据的集合,它并不负责对数组进行排序,所以排序是需要我们手动来进行的。
    今天我们来给大家讲讲两种排序:
    1.选择排序
    举一个升序排列的例子
    选择排序就是先将第一个数,与后面的每一个数进行比交,如果第一个数比后面的数大,那么他们俩交换位置,继续进行排序。直到这一波排序完了。换第二个数比较,以此类推
    通俗的说就是,先选出第一个最小的数,在选出第二个最小的数,以此类推
    上代码:

    //选择排序
    	public static int[] xuanZe(int[] nums){
    		for(int i=0;i<nums.length;i++){
    			for(int j=i+1;j<nums.length;j++){
    				if(nums[i]>nums[j]){
    					int num = nums[i];
    					nums[i] = nums[j];
    					nums[j] = num;
    				}
    			}
    		}
    		return nums;
    	}
    

    2.冒泡排序
    同样,举一个升序的例子:
    冒泡排序呢,是先第一个数和第二个数排序,如果第一个数比第二个数大,交换位置,然后第二个数和第三个数进行比较,同理以此类推。
    先进行第一轮排序后,是不是找出了数组的最大值,并把最大值放到了最后。
    然后进行第二轮排序,找出第二大的值,放到后面,以此类推
    所以通俗的说:冒泡排序就是先找出最大的数,在找出第二打的数以此类推
    上代码:

    //冒泡排序
    	public static int[] maoPao(int[] nums){
    		for(int j=0;j<nums.length-1;j++){
    			for(int i=0;i<nums.length-j-1;i++){
    				if(nums[i]>nums[i+1]){
    					int num = nums[i];
    					nums[i] = nums[i+1];
    					nums[i+1] = num;
    				}
    			}
    		}
    		return nums;
    	}
    

    选择排序是先选出第一个值,从前往后选,冒泡排序是先选出最后的一个值,从后往前选

    调用方法进行排序
    没错,刚刚说了那么多,都是在扯犊子,真正写排序的话,根本不需要这么麻烦,在jdk中,java已经为我们封装了排序的方法,我们只需要调用就好了。

    import java.util.Arrays;
    class Demo{
    	public static void main(String[] args){
    		int[] nums = {12,87,11,1,4,3,98,16,71};
    		Arrays.sort(nums);
    		for(int i:nums){
    			System.out.println(i);
    		}
    	}
    }
    

    只要使用Arrays.sort(nums);一行代码就完事了,惊不惊喜?意不意外?

    展开全文
  • 给定一组数组来实现二分法查找 ...public static void main(String[] args) { int [] arr={12,13,54,68,89,77,88,9}; 首先利用冒泡排序将无序变为有序 for(int i=0;i<arr.length;i++){ 控制轮数 for(int...

    给定一组无序的数组来实现二分法查找

    假如这一组数组是:12,55,69,13,9,56,11,36,7

    以下就是该代码

    public static void main(String[] args) {
     int [] arr={12,13,54,68,89,77,88,9};
    

    首先利用冒泡排序将无序变为有序

    for(int i=0;i<arr.length;i++){  控制轮数
    for(int j=0;j<arr.length-i-1;i++){ 控制次数
    if(arr[j]>arr[j+1]){ 这是从小到大排序 如果第一个大于第二个,那么就将第一个和第二个换位置
    int t=arr[j];
    arr[j]=arr[j+1];
    arr[j+1]=t
    }
    }
    }
    for(int i=0;i<arr.length-1;i++){   遍历
    System.out.print(arr[i]);  输出
    }
    

    输出的结果
    现在这组数组为有序的,那么怎么用二分法实现查找某一个,并输出下标呢,以下代码就是

    int a=11    2要查找的是11
    int start=0   数组的开始位置
    int end=arr.length-1    数组的结果位置
    while(end>start){ 只有结尾大于开始,就说明他们之间是有数据的
    int c=(start+end)/2 
    if(arr[c]>a){  如果你查找的a小于他的这个界限c,说明你找的在前半段,所以就是end结尾,也就明白为什么要-1
    end=c-1
    }else if(arr[c]<a){ 如果你查找的a大小于他的这个界限c,说明你找的在后半段,所以就是start开始,也就明白为什么要+1
    start=c+1     
    }else{    否则就是中间,正好是你要的值
    System.err.println("恭喜你找到了,当前下标为"+c);  
    break;
    }
    }
    System.out.println("没有找到");  这是最有的一种,假如,你要找的数组里面没有,就会在输出这句话。
    

    结果
    小女子不才,如有不妥之处,还请各位多多指教。

    展开全文
  • 数组是在TestArray类中被创建的,在ArraySort程序中另外创建了一个函数serOrder用于排序,但是发现这个setOrder不能排序怎么输出就怎么输出的,求解,谢谢大佬们! import java.util.Arrays; public class ...
  • 剑指Offer第三十二题:把数组排成最小的数 暴力思路:递归回溯得到所有的排列组合,取出值最小的排列 结题思路:对数组进行排序排序结果能够按照组合数最小的顺序排列 关键怎么排序,这里使用局部比较的方式,当...

    剑指Offer第三十二题:把数组排成最小的数

    在这里插入图片描述
    暴力思路:递归回溯得到所有的排列组合,取出值最小的排列

    结题思路:对数组进行排序,排序结果能够按照组合数最小的顺序排列
    关键怎么排序,这里使用局部比较的方式,当两个字符串s1和s2,组成的字符串s1+s2字典序小于s2+s1时,将s1放在s2的前边。

    这样得到的数组就是想要的结果了,只需要将其串联为一个字符串就可以了

    import java.util.*;
    
    public class Solution {
        public String PrintMinNumber(int [] numbers) {
            StringBuffer res = new StringBuffer();
            if(numbers == null || numbers.length == 0){
                return res.toString();
            }
            String[] nums = new String[numbers.length];
            for(int i = 0; i<numbers.length; i++){
                nums[i] = numbers[i]+"";
            }
            Arrays.sort(nums,new Comparator<String>(){
                public int compare(String s1,String s2){
                    return (s1+s2).compareTo(s2+s1);
                }
            });
            for(int i = 0; i<nums.length; i++){
                res.append(nums[i]);
            }
            return res.toString();
        }
    }
    
    展开全文
  • 直接插入排序

    2016-04-01 14:18:57
    直接插入排序,名字怎么感觉不对啊,是对输入的一个无序的数组进行排序排序过程示意: 思路是找到适合的位置后,之后的数组元素后移,后移的小技巧参考代码。代码如下:#include #include #include ...
  • 利用bitmap进行排序,装入数据的时候只需要位运算设置1,那么取出数据的时候一般是怎么把...简单例子: 用一个32位的int表示0-31的数据,并对一个数组排序输出public static void main(String[] args){int[] data = ...
  • JavaScript的数组Array的原型里有个sort方法,任何数组都可以使用它,作用是“排序”。具体是怎么排序呢?我今天来做个简单整理。 首先,如果不接受参数,sort方法会怎么排序呢? 答案是,每个元素转成字符串...
  • 温习冒泡排序

    2018-01-25 11:53:00
    本来这个月没啥可写的了,但昨晚去面试了一,让手写个冒泡排序,蒙蔽了给,上学时候写过,这会不会写了竟然。最近用List用多了,总想着怎么调换顺序,用啥方法,add、remove、insert?忽略了数组的基础,直接赋值...
  • 2,:Stringstr="ABCDF"这个字符串怎么排序成“FDCBA”?3:写一个冒泡排序把这个数组排一下“1,9,3,4,7,2,8,5,”?1)publicinterfaceWork{voiddoWork();}CreateProduct:publicclassStudentworkim...
  • #include<string.h> #include void main() { void swap(char *, char *);//函数声明 char str1[20], str2[20], str3[20];//定义三个字符串数组 printf("input three line:\n"); gets(str1); gets(str2); ...
  • 一开始拿到这道题时,有点纠结排序后的字符串不知道怎么转回来,最后经别人提醒我字符和数绑定成一个数组就可以了 View Code 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<...
  • 利用bitmap进行排序,装入数据的时候只需要位运算设置1,那么取出数据的时候一般是怎么把...简单例子: 用一个32位的int表示0-31的数据,并对一个数组排序输出public static void main(String[] args){int[] data = ...
  • 利用bitmap进行排序,装入数据的时候只需要位运算设置1,那么取出数据的时候一般是怎么把...简单例子: 用一个32位的int表示0-31的数据,并对一个数组排序输出public static void main(String[] args){int[] data = ...
  • 语言真的是相通的吗

    2011-08-25 17:41:00
    就拿给字符串排序来说吧,C的做法是先排序的字符串存在字符串数组中,另设一个和数组大小相同的字符指针数组准备排序,这里用的是指针排序,其实就是排原来数组的下标。这种处理方式带来的好处就是从来不用拷贝...
  • // 第一个参数first 排序数组的起始地址。 // 第二个参数last 结束的地址(最后一个数据的后一个数据的地址) // 第三个参数comp是排序的方法:可以是从升序也可是降序 不写则默认的排序方法是从小到大排序 ...
  • #include <string.h> #include #define MAXSIZE 100 typedef struct NODE { char name[MAXSIZE]; int p_num; double p_price; char kind[MAXSIZE]; struct NODE *next; }node; //下面这部分是啥??? ...
  • #include<string.h> #include #include #include #define K 5 /*商品的结构体*/ struct commodity { char name[15];//商品的名字 int number; //商品的编号 int jiage;//商品的价格 int shuliang;//商品的数量 ...
  • 题目描述 // 49. 字母异位词分组 // 给定一个字符串数组,将字母异位...// 如果所有字符排序,得到的排序String一定是相等的, // 所以我们使用一个HashMap的key来保存这些排序好的String,对应的value来保存 // 需
  • #include<string> #include #include #include //#include using namespace std; #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define LEN(a) sizeof(a)/sizeof(a[0]) typedef int Status; //Status 是函数...
  • 菜鸟成长之路

    2011-01-11 22:17:00
    从键盘上输入三个字符(长度小于80),存入二维数组,然后对其进行排序(由小到大)并按次序输出 自己编写的,调试通过(刚开始写的时候,不知道怎么把字符串存入数组,后来想到了gets()函数,加一个...
  • 算法题之哈希表

    2020-06-16 10:39:26
    文章目录1、字母异位...关键在于存在map中的string,这里我们存在里面的应该排序后的字符串,然后传入的每个字符串先保留一个副本,然后排序了后在map中count。 复杂度 时间复杂度:O(n) 空间复杂度:O(n) ...
  • 0153. 寻找旋转排序数组中的最小值 0199. 二叉树的右视图 0200. 岛屿数量 0201. 数字范围按位与 0208. 实现 Trie (前缀树) 0209. 长度最小的子数组 0211. 添加与搜索单词 - 数据结构设计 0215. 数组中的第 K...
  • java常用工具类的使用

    热门讨论 2012-03-19 20:11:37
    代码演示:数组排序 public static void sort(int[] arrs) { boolean isSwap = false; for (int i = 0; i ; i++) { isSwap = false; for (int j = arrs.length - 1; j > i; j--) { if (arrs[j - 1] > arrs[j]) ...
  • 你必须知道的495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    我就可以“array”当作下标从1 开始的数组。 函数和多维数组 6.18 当我向一个接受指针的指针的函数传入二维数组的时候,编译器报错了。 6.19 我怎样编写接受编译时宽度未知的二维数组的函数? 6.20 我怎样...
  • 11、嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢? 答: 这个问题用几个解决方案。我首选的方案是: while(1) { } 一些程序员更喜欢如下方案: for(;;) { } 13、关于内存对齐的问题以及sizof()...
  • //这里我突发奇想大的放置在数组后面,程序运行起来没问题,不知道实际上能不能这样??? st[j] = st[j + 1]; st[j + 1] = st[num]; } } } scanf("%20s", st[5].name);//向数组添加新成员 scanf...

空空如也

空空如也

1 2 3 4
收藏数 76
精华内容 30
关键字:

怎么把string数组排序