急,陣列1排序後->陣列2,求演算法!3q delphi / windows sdk/api
陣列1排序,同時將陣列1排序前的序號值按排序後的順序存入陣列2,求一簡單演算法(**少優先,速度其次)
例:
a[0]=4
a[1]=5
a[2]=3 ...
a[1]最大,a[0]第二,a[2]第三
則取a的原序號->b
b[0]=1
b[1]=0
b[2]=2...
3q~
沒看動啥意思
如果只是排序,delphi自帶的關於執行緒的demo中有排序演算法。
.......就是
a[0]=4
a[1]=5
a[2]=3 ...
可見:
a[1]最大,其序號a[i]的i=1
a[0]第二,其序號a[i]的i=0
a[2]第三, 其序號a[i]的i=2
所以:
要求獲得:
b[0]=1
b[1]=0
b[2]=2...
unit unit1;
inte***ce
uses
windows, messages, sysutils, variants, classes, graphics, controls, forms,
dialogs, stdctrls;
type
ttest=record
data : integer;
index : integer;
end;
tform1 = class(tform)
memo1: tmemo;
button1: tbutton;
memo2: tmemo;
procedure button1click(sender: tobject);
private
public
end;
var
form1: tform1;
implementation
procedure tform1.button1click(sender: tobject);
var
farray : array[0..5] of ttest;
i,j : integer;
t : ttest ;
begin
randomize;
//初始化乙個陣列
for i:= 0 to 5 do
begin
farray[i].data := random(100);
farray[i].index := i;
memo1.lines.add(format('資料:%d;序號:%d',[farray[i].data,farray[i].index]));
end;
//排序
for i := high(farray) downto low(farray) do
for j := low(farray) to high(farray) - 1 do
if farray[j].data > farray[j + 1].data then
begin
t := farray[j];
farray[j] := farray[j + 1];
farray[j + 1] := t;
end;
//顯示結果
for i:= 0 to 5 do
memo2.lines.add(format('資料:%d;序號:%d',[farray[i].data,farray[i].index]))
end;
end.
靠,反了,我是按照從小到大排序的,你調整一下就可以了。
就是要這個效果!!我鬱悶了1天啊!!!!萬萬分感謝!!!!!!!;
3q3q3q3q;
陣列0,1和陣列0,1,2排序
陣列有0和1,將0排在1之前 思路 採用兩個指標,乙個從前乙個從後。p0找到不為0的值,p1找不到不為1的值,二者進行交換。void sort2 int arr,int len 陣列有0,1和2,將0排在1之前,1排在2之前 時間複雜度o n 思路 通過三個下標遍歷一遍實現的方法。p0從左側開始,指...
(週日賽1)排序2
題意 非常明顯 就是排序了 但是當時腦筋突然沒轉過彎來,沒有相同該怎麼取盡所有的數 後來看到同學的 才恍然大悟 題目也有幾個坑點 千位數字相同的在同一行 每組輸出資料間空一行,最後一組資料後面沒有空行 input 每組資料佔一行,代表四張卡片上的數字 0 數字 9 如果四張卡片都是0,則輸入結束。o...
js陣列詳解(四) 排序API
1.排序 自定義排序 冒泡 排序api arr.sort 大問題 預設將所有元素轉為字串再按字串排列 只能對字串型別的元素正確排序 解決 自定義比較規則 比較器函式 專門比較任意兩值大小的函式 要求 兩個引數 a,b 返回值 如果a b,就返回正數 如果a降序 顛倒比較器函式的正負號,可改公升序為降...