List <object> shellSort(List <object> objList) { int i, j, inc; object temp; inc = 3; while (inc > 0) { for (i = 0; i < objList.Count; i++) { j = i; temp = objList[i]; while ((j >= inc) && (!sortInfo.comparisonFunction(sortInfo.property.GetValue(objList[j - inc]), sortInfo.property.GetValue(temp)))) { objList[j] = objList[j - inc]; j = j - inc; } objList[j] = temp; } if (inc / 2 != 0) { inc = inc / 2; } else if (inc == 1) { inc = 0; } else { inc = 1; } } return(objList); }
public List <object> Sort(List <object> objList, string sortPropertyName) { SortInfo sortInfo = new SortInfo(objList[0].GetType().GetProperty(sortPropertyName), sortPropertyName); for (int i = 0; i < objList.Count - 1; i++) { for (int j = 0; j < objList.Count - i - 1; j++) { if (!sortInfo.comparisonFunction(sortInfo.property.GetValue(objList[j]), sortInfo.property.GetValue(objList[j + 1]))) { object tmp = objList[j]; objList[j] = objList[j + 1]; objList[j + 1] = tmp; } } } return(objList); }