Java编程中怎样实现中文排序

Java编程中怎样实现中文排序,第1张

简单的实现排序,可以参考如下的代码

import java.text.Collator

import java.util.Arrays

import java.util.Comparator

import java.util.Locale

public class PYDemo {

public static void main(String[] args) {

String[] names= {"赵z子z龙l","刘l备b","关g羽y","张z飞f"}

System.out.println("排序前"+Arrays.toString(names))

Comparator cpt = Collator.getInstance(Locale.CHINA) 

Arrays.sort(names, cpt)

System.out.println("排序后"+Arrays.toString(names))

}

}

测试输出

排序前[赵z子z龙l, 刘l备b, 关g羽y, 张z飞f]

排序后[关g羽y, 刘l备b, 张z飞f, 赵z子z龙l]

如果有一些非常用的汉字,生僻字等,建议使用一些jar包实现,比如pinyin4j

#include <stdio.h>

#include <string.h>

#define MAX_NAME 20 //最大名字长度

#define MAX_NUM100 //最大学生人数

void sort_bubble(char (*pc)[MAX_NAME],int n)//排序函数

{

int i,j

char str[MAX_NAME]

for(i=0i<n-1i++)

{

for(j=i+1j<nj++)

{

if(strcmp(pc[i],pc[j])>0)

{

strcpy(str,pc[i])

strcpy(pc[i],pc[j])

strcpy(pc[j],str)

}

}

}

}

void display_name(char (*pc)[MAX_NAME],int n)//显示这n个姓名

{

int i

for(i=0i<ni++)

{

printf("%s\n",pc[i])

}

}

int main()

{

int i=1,n

char str[MAX_NUM][MAX_NAME]

printf("请输入学生总数:")

scanf("%d",&n)

while(i<=n)

{

printf("请输入第%d个学生姓名:",i)

scanf("%s",str[i++-1])

}

printf("排序前的学生名单如下:\n")

display_name(str,n)

sort_bubble(str,n)

printf("排序后的学生名单如下:\n")

display_name(str,n)

return 0

}

说明:

1:采用的是冒泡排序,用快速排序当然快些,但我忘了

2:已验证通过,结果正确。

3:随意输入人数和姓名,只要数组不越界就没有问题!

4:两个函数:排序和显示

5:给分+好评

对汉字是按拼音排序的,示例:import java.util.*

import java.text.*public class Test{

public static void main(String args[]) {

//Comparator cmp = (RuleBasedCollator)java.text.Collator.getInstance(java.util.Locale.CHINA)//try testing various locales

Comparator cmp = java.text.Collator.getInstance(java.util.Locale.CHINA)//try testing various locales

String[] arr = {"张三", "李四", "张", "王"}

java.util.Arrays.sort(arr, cmp)

for (int i = 0i <arr.lengthi++)

System.out.println(arr[i])

Comparator cmp2 = java.text.Collator.getInstance()//try default locale

String[] arr2 = {"我", "是", "草", "吗"}

java.util.Arrays.sort(arr2, cmp2)

for (int i = 0i <arr2.lengthi++)

System.out.println(arr2[i])

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8078112.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存