使用归并排序对数组进行排序的C程序
数组是一组共享一个公共名称的相关数据项。数组中的特定值借助其“索引号”来标识。
声明数组
声明数组的语法如下-
datatype array_name [size];
例如,
float marks [50]
它声明'marks'是一个包含50个浮点元素的数组。
int number[10]
它将“数字”声明为最多包含10个整数常量的数组。
每个元素都通过使用“数组索引”来标识。
使用数组索引可以轻松访问数组元素。
我们用于合并排序的逻辑如下-
void MergeSort(int *array, int left, int right){ int middle = (left+right)/2; if(left合并所有元素的逻辑如下-
void Merge(int *array, int left, int middle, int right){ int tmp[right - left + 1]; int pos = 0, leftposition = left, rightposition = middle + 1; while (leftposition <= middle && rightposition <= right){ if (array[leftposition] < array[rightposition]){ tmp[pos++] = array[leftposition++]; }else{ tmp[pos++] = array[rightposition++]; } } while (leftposition <= middle) tmp[pos++] = array[leftposition++]; while (rightposition <= right) tmp[pos++] = array[rightposition++]; int i; for (i = 0; i < pos; i++){ array[i + left] = tmp[i]; } return; }程序
以下是合并排序的C程序-
#includevoid Merge(int * , int , int , int ); void MergeSort(int *array, int left, int right){ int middle = (left+right)/2; if(left 输出结果 执行上述程序时,会产生以下结果-
enter size of array:10 enter the elements in an array: 2 -10 34 -3 45 67 -89 34 23 67 -89 -10 -3 2 23 34 34 45 67 67