Lab Sort

Run Settings
LanguageC++
Language Version
Run Command
#include <iostream> using namespace std; typedef int (*CompareFunctionType)(void *, void *); //Теперь переменную это типа можно объявить так: //CompareFunctionType compare_function_pointer = &Compare; //В отдельной функции организуйте ввод элементов массива: void InputArray(long input_data[], int length){ for (int i=0;i<length;i++){ cin>>input_data[i]; } } int CompareInt0to9(void *first_pointer, void *second_pointer ) { long *first_element_int_pointer = (long *)first_pointer; long *second_element_int_pointer = (long *)second_pointer; return *first_element_int_pointer - *second_element_int_pointer; } int CompareInt9to0(void *first_pointer, void *second_pointer ) { long *first_element_int_pointer = (long *)first_pointer; long *second_element_int_pointer = (long *)second_pointer; return *second_element_int_pointer - *first_element_int_pointer; } //В отдельной функции организуйте поиск индекса минимального элемента //на подмассиве: int FindMinimumIndex(long input_data[], int first_index, int last_index, CompareFunctionType compare_function_pointer){ int target=first_index; for (int j=first_index;j<last_index;j++){ if ((*compare_function_pointer)(&input_data[j], &input_data[target])<0) { target=j; } } //cout<<target<<endl; return target; } //В отдельной функции реализуйте обмен элементов массива. void Swap(long &first_element, long &second_element){ long c=first_element; first_element=second_element; second_element=c; } //В отдельной функции организуйте сортировку. void SelectionSort(long input_data[], int length, CompareFunctionType compare_function_pointer){ for (int i=0;i<length;i++){ int mini=FindMinimumIndex(input_data,i,length,compare_function_pointer); Swap(input_data[i],input_data[mini]); } } //В отдельной функции организуйте вывод элементов упорядоченного //массива: void OutputArray(long input_data[], int length){ for (int i=0;i<length;i++){ cout<<input_data[i]<<" "; } } int main() { int CompareInt0to9(void *first_pointer, void *second_pointer); int CompareInt9to0(void *first_pointer, void *second_pointer); const int kFunctionsCount = 2; CompareFunctionType compare_function_pointers[kFunctionsCount]; compare_function_pointers[0]=CompareInt0to9; compare_function_pointers[1]=CompareInt9to0; int type; cin>>type; int n; cin>>n; long* arr=new long[n]; InputArray(arr, n); //int Compare(void *first_pointer, void *second_pointer); SelectionSort(arr,n,compare_function_pointers[type]); OutputArray(arr,n); return 0; }
Editor Settings
Theme
Key bindings
Full width
Lines