void SortIntArray(AcGeIntArray &arr)
{
int tempNr;
for(int i=0; i<arr.logicalLength(); i++)
{
for(int j=0; j<arr.logicalLength()-1; j++){
if (arr[j] > arr[j+1])
{
tempNr = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tempNr;
}
}
}
}
Сортировка масива типа DEVMODE
На делфях всё просто, а на шарпе пришлось вспоминать как вообще сортировать можно ....
DEVMODE temp;
for (int i = 0; i < CountArray; i++)
{
for (int j = 0; j < CountArray - 1; j++)
{
if (arrayDevMode[j].dmPelsWidth > arrayDevMode[j + 1].dmPelsWidth)
{
temp = arrayDevMode[j];
arrayDevMode[j] = arrayDevMode[j + 1];
arrayDevMode[j + 1] = temp;
}
else if (arrayDevMode[j].dmPelsHeight > arrayDevMode[j + 1].dmPelsHeight)
{
temp = arrayDevMode[j];
arrayDevMode[j] = arrayDevMode[j + 1];
arrayDevMode[j + 1] = temp;
}
else if (arrayDevMode[j].dmBitsPerPel > arrayDevMode[j + 1].dmBitsPerPel)
{
temp = arrayDevMode[j];
arrayDevMode[j] = arrayDevMode[j + 1];
arrayDevMode[j + 1] = temp;
}
else if (arrayDevMode[j].dmDisplayFrequency > arrayDevMode[j + 1].dmDisplayFrequency)
{
temp = arrayDevMode[j];
arrayDevMode[j] = arrayDevMode[j + 1];
arrayDevMode[j + 1] = temp;
}
}
}
ЧТо не так??
Пытаешься сортировать по нескольким- не удивительно, что в результате полный бардак.
Простейшая сортировка:
Код:
Напиши операцию сравнения двух структур DEVMODE и используй её в цикле один раз.
Цитата: MAcK
помогите с сортировкой, нужно отсортировать масив типа DEVMODE.
Взгляните на статические члены класса System.Array, и вы все поймете.
Вот пример использования встроенной сортировки.
Код:
public static void SortDevModeArray(DEVMODE[] array) {
Array.Sort<DEVMODE>(array, delegate(DEVMODE a, DEVMODE b) {
if(a.dmPelsWidth > b.dmPelsWidth)
return 1;
else if(a.dmPelsWidth < b.dmPelsWidth)
return -1;
if(a.dmPelsHeight > b.dmPelsHeight)
return 1;
else if(a.dmPelsHeight < b.dmPelsHeight)
return -1;
if(a.dmBitsPerPel > b.dmBitsPerPel)
return 1;
else if(a.dmBitsPerPel < b.dmBitsPerPel)
return -1;
if(a.dmDisplayFrequency > b.dmDisplayFrequency)
return 1;
else if(a.dmDisplayFrequency < b.dmDisplayFrequency)
return -1;
return 0;
});
}
Array.Sort<DEVMODE>(array, delegate(DEVMODE a, DEVMODE b) {
if(a.dmPelsWidth > b.dmPelsWidth)
return 1;
else if(a.dmPelsWidth < b.dmPelsWidth)
return -1;
if(a.dmPelsHeight > b.dmPelsHeight)
return 1;
else if(a.dmPelsHeight < b.dmPelsHeight)
return -1;
if(a.dmBitsPerPel > b.dmBitsPerPel)
return 1;
else if(a.dmBitsPerPel < b.dmBitsPerPel)
return -1;
if(a.dmDisplayFrequency > b.dmDisplayFrequency)
return 1;
else if(a.dmDisplayFrequency < b.dmDisplayFrequency)
return -1;
return 0;
});
}