×

java十大算法 算法 java

java中常用的算法,有哪些告诉我名字就可以了越多越好?java 怎么对于 map value 排序

admin admin 发表于2022-07-13 17:01:42 浏览109 评论0

抢沙发发表评论

java中常用的算法,有哪些告诉我名字就可以了越多越好

插入排序选择排序气泡排序快速排序和排序排序排序排序排序桶排序基库对先前的公共点进行分类。

java 怎么对于 map value 排序


package Map;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
public class SortMap {
public static void main(String args) {
Map map=new TreeMap ();
map.put(“图书“ , 4);
map.put(“音像“ , 6);
map.put(“素材“ , 9);
map.put(“音乐“ , 8);
map.put(“影视“ , 7);
map.put(“动漫“ , 4);
map.put(“歌曲“ , 3);
map.put(“图片“ , 2);
map.put(“图标“ , 6);
ArrayList《Map.Entry《String,Integer》》 entries= sortMap(map);
for( int i=0;i《5;i++){
System. out.print(entries.get(i).getKey()+“:“ +entries.get(i).getValue());
}
}
public static ArrayList《Map.Entry《String,Integer》》 sortMap(Map map){
List《Map.Entry《String, Integer》》 entries = new ArrayList《Map.Entry《String, Integer》》(map.entrySet());
Collections.sort(entries, new Comparator《Map.Entry《String, Integer》》() {
public int compare(Map.Entry《String, Integer》 obj1 , Map.Entry《String, Integer》 obj2) {
return obj2.getValue() - obj1.getValue();
}
});
return (ArrayList《Entry《String, Integer》》) entries;
}
}12345678910111213141516171819202122232425262728293031323334353637
此时是按照降序排序,如果想升序排序,则Comparator的 返回 改为obj1.getValue() - obj2.getValue();即可
总结:由于TreeMap主要是针对key进行默认排序的,但是有的时候我们需要对value进行排序,这时候主要采取的策略是 将map变为List,然后利用Collections.sort进行排序,同时重写Comparator方法,即可。

在主字符串中查找子串的KMP算法和字符串中查找字符用KMP算法的C语言代码


/***KMP算法是对蛮力算法的优化,原理很简单。但存在最坏情况,时间复杂度很可能会崩坏到O(m+n)。
* 推荐在高频度数据查找采用优化的Boyer-Moore算法。
*以下为代码
***/
/***首先创建一个ADT,这里给出最简形式,省略部分涉及不到的操作***/
ADT String
{voidStrAssign(SString &T,char*S)//值为S的串T
bool SreEmpty(SString &S) //判断空串
int StrLength(SString &s) //返回长度
void Concat (SString &T,SString&S1,SString &S2)//返回组合的新串
void SubString (SString ⋐,SString &S,int pos, int len)//同串则返回第pos后的串的最初位置,否则为0

}
/***算法部分***/
int KMP(char *T,char *p)
{int n=strlen(T);
int m=strlen(P);
int i,j;
for(i=0;i《n-m;i++)
{j=0;
while(j《m&&T)j++;
if(j==m) return i;
}
return -1}
-算法