list的sort排序演算法
1. 在java中如何給數據進行大小排序
privateList<Integer>mList=newArrayList<>();
mList.add(1);
mList.add(5);
mList.add(7);
mList.add(9);
mList.add(8);
mList.add(3);
//排序前
Log.d(TAG,"onCreate:"+mList.toString());
Collections.sort(mList);
//排序後
Log.d(TAG,"onCreate:"+mList.toString());
列印的Log:
[1,5,7,9,8,3]
[1,3,5,7,8,9]
2. python中兩個list該如何排序
這個其實很簡單,先給你提供下思路,別使用自帶 sort() 排序。自己寫個排序演算法,根據list1分數排序,在排序的過程中同時將list2姓名根據list1的排序演算法走一遍,即可得到對等的序列。
#-*-coding:utf-8-*-
name=['a','b','c','d','e','f']
score=[96,97,92,93,99,91]
definsert_sort2(num_list,name):
"""
插入排序,稍微修改之後
"""
foriinrange(len(num_list)-1):
forjinrange(i+1,len(num_list)):
ifnum_list[i]>num_list[j]:
num_list[i],num_list[j]=num_list[j],num_list[i]
name[i],name[j]=name[j],name[i]
returnnum_list,name
printinsert_sort2(score,name)
definsert_sort(num_list):
"""
插入排序,正常的
"""
foriinrange(len(num_list)-1):
forjinrange(i+1,len(num_list)):
ifnum_list[i]>num_list[j]:
num_list[i],num_list[j]=num_list[j],num_list[i]
returnnum_list
#輸出:([91,92,93,96,97,99],['f','c','d','a','b','e'])
#使用list1,list2=insert_sort(list1,list2)這樣就可以得到了
3. java 實現ArrayList的sort
java中可以使用Sort方法,可以對集合中的元素進行排序。Sort有三種重載方法,聲明代碼如下所示。
public void Sort();
//使用集合元素的比較方式進行排序
public void Sort(IComparer comparer);
//使用自定義比較器進行排序
public void Sort(int index, int count, IComparer comparer)
//使用自定義比較器進行指定范圍的排序
注意:為使用Sort方法進行排序,集合中的所有元素必須實現IComparable介面,否則,將拋出異常。
這里介紹使用第一種方法進行簡單的排序實例
using System;
using System.Collections;
class Program{
static void Main(string[] args)
{
ArrayList al = new ArrayList();
al.AddRange(new string[8] { "Array1", "Array2", "Array3", "Array5", "Array4", "Array8", "Array7", "Array6" });
al.Sort();
foreach (string s in al)
{
Console.WriteLine(s);
}
Console.ReadLine();
}
}
4. C語言選擇排序法
這是選擇排序。先用a[0]與a[1]比較,當a[0]<a[1]時並不交換,而用k記下來現在a[0]最小……這樣一趟比較完後a[k]就是整個數組中最小的元素,把它與a[0]交換;第二趟,從a[1]開始重復前面的操作,那麼最後a[1]就是剩下的n-1個元素中最小的……看a[0]、a[1]已經由小到大排好了,當做完n-1趟時不就把整個數組都排好了嗎?注意:t=array[k];array[k]=array[i];array[i]=t;不是for(j=i+1;j<n;j++)的循環體,要等它循環完了後才執行一次。
5. java List<T>排序
一、首先你的SpecialArticle類要實現 java.util.Comparator介面,在public int compare(Object o1, Object o2) 方法中對比兩個SpecialArticle的sort屬性的大小,第一個的大就返回1,第二個的大就返回-1,一樣大就返回0;二、然後使用java.util.Arrays的sort方法來替List集合排序:java.util.Arrays.sort(sa);。
6. Java List提供的默認排序方法sort()用的是什麼排序策略
你好,很高興回答你的問題。
List只是個介面,sort方法具體是怎麼排序的是在具體的實現類中的。
不同的實現類排序實現是不一樣的。有的同一個實現類在java的不同版本中排序的實現也可能是有差別的。
如果有幫助到你,請點擊採納。
7. list中的數據由大到小排序,有什麼好的演算法
1、自定義類型裡面重載「<」運算符,裡面不是小於為真,而是大於為真,然後l1.sort( );
2、自定義一個二元函數對象,也是左操作數大,右操作數小為真,作為參數傳遞進sort去
如果是整數的數據類型,就可以這樣l1.sort(less<int>);
8. C語言中的選擇排序法是什麼
選擇排序(Selection sort)是一種簡單直觀的排序演算法。工作原理是每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數據元素排完。
以下是一個實現選擇排序的例子:
#defineSWAP(x,y,t)((t)=(x),(x)=(y),(y)=(t))
//將list中的n個數據,通過選擇排序演算法排序。
voidselete_sort(intlist[],intn)
{
inti,j,min,temp;
for(i=0;i<n-1;i++){
min=i;
for(j=i+1;j<n;j++)//找出最小元素的下標。
if(list[j]<list[min])
min=j;
SWAP(list[i],list[min],temp);//交換最小元素到當前起始位置。
}
}
9. C++里關於list的排序演算法
1樓的說法是正確的。
不過,有更方便、更高效的實現方法。
#include <iostream>
#include <list>
#include <string>
using namespace std;
struct Test
{
string Name;
int order;
};
bool comp(const Test &lhs, const Test &rhs)
{
return lhs.order < rhs.order;
}
int main(int argc, char *argv[])
{
list<Test> testList;
Test te;
te.Name = "AAA";
te.order = 1;
testList.push_back(te);
te.Name = "BBB";
te.order = 3;
testList.push_back(te);
te.Name = "CCC";
te.order = 2;
testList.push_back(te);
te.Name = "DDD";
te.order = 5;
testList.push_back(te);
te.Name = "EEE";
te.order = 4;
testList.push_back(te);
testList.sort(comp);//************
for(list<Test>::const_iterator citer = testList.begin(); citer != testList.end(); ++citer)
{
cout << citer->Name << "\t" << citer->order << "\n";
}
cout << endl;
system("pause");
return 0;
}
一句話實現功能, 且效率更高。
10. 如何實現對ArrayList排序 sort
使用Collections.sort()傳入ArrayList,會採用默認的方式進行排序(字典序)
使用Collections.sort()傳入ArrayList和自己實現Commparator介面的類的對象,實現自定義排序
使用List.sort()傳入自己實現Commparator介面的類的對象,實現自定義排序
Comparator返回值在jdk1.7、jdk1.8里必須是一對相反數,如1和-1,不能是1和0.因為1.7的排序演算法採用timsort,對返回值有嚴格要求