Вы привели тело цикла, такое же, как у меня.
temp = array[i];
array[i] = array[min];
array[min] = temp;
чтоб проверить правильность, нужно понять алгоритм, посчитать вручную на бумаге, и сравнить с результатом программы
if(min == i) continue;
temp = array[i]; //
array[i] = array[min]; // меняю их местами
array[min] = temp; //
Например WhiteDB - БД в памяти. Но на счет OLE нужно выяснять отдельно, я не в курсе. Сейчас эта тема не то что бы сильно популярна, особенно в открытом ПО.
Что касается БД, то подойдет любая, для которой есть OLEDB/ODBC драйвер - в этом случае сможете ее использовать через стандартный механизм OLEDB