#include #include "TMath.h" #include using std::cout; using std::endl; template struct Compare { Compare(const T * d) : fData(d) {} bool operator()(int i1, int i2) { return fData[i1] > fData[i2]; } const T * fData; }; void Sort1() { Int_t n = 20; const Int_t k[20] = {3,5,1,8,10,11,21,10,7,10,28,10,92,10,5,10,20,10,2,1}; Int_t index[20]; for(Int_t i = 0; i < 20; i++) { index[i] = i; } Bool_t xx = kTRUE ; //TMath::Sort(n,k,index,xx); // use stl for sorting std::stable_sort(index,index+n, Compare(k) ); // for(Int_t j = 0; j < n; j++) // { // Int_t itest = 0; // Int_t ihld = index[j]; // for(Int_t i1 = 0; i1 < j; i1++) // { // if(itest == 0 && k[index[i1]] < k[ihld]) // { // itest = 1; // for(Int_t i2 = j-1;i2 >= i1;i2--) // { // index[i2+1] = index[i2]; // } // index[i1] = ihld; // } // } // } for(Int_t i = 0; i < 20; i++) { cout<