c – 对字符串数组进行合并排序
发布时间:2020-12-16 07:33:41 所属栏目:百科 来源:网络整理
导读:我正在尝试使用合并排序算法对字符串数组进行排序.我编写了这段代码并且它适用于整数数组,但令人惊讶的是字符串数组却没有!它似乎只是排序数组的第二部分.我不知道是什么这段代码中有错!我将非常感谢您的帮助. #include iostream#include list#include str
我正在尝试使用合并排序算法对字符串数组进行排序.我编写了这段代码并且它适用于整数数组,但令人惊讶的是字符串数组却没有!它似乎只是排序数组的第二部分.我不知道是什么这段代码中有错!我将非常感谢您的帮助.
#include <iostream> #include <list> #include <string> using namespace std; void MergeSortA(int low,int high); void MergeA(int low,int mid,int high); string currentArray[5]; int main() { for(int i = 0; i < 5; i++) cin >> currentArray[i]; MergeSortA(0,4); for(int i = 0; i < 5; i++) cout << currentArray[i] <<endl; return 0; } void MergeSortA(int low,int high) { int mid = 0; if(low < high) { mid = ((low+high)/2); MergeSortA(low,mid); MergeSortA(mid+1,high); MergeA(low,mid,high); } } void MergeA(int low,int high) { int i = low,j = mid+1,k = low; string Temp[5]; while(i <= mid && j <= high) { if( currentArray[i] < currentArray[j] ) { Temp[k].assign(currentArray[i]); i++; } else { Temp[k].assign(currentArray[j]); j++; } k++; } if(i > mid ) { for(int h = j ;h <= high ; h++ ) { Temp[k].assign(currentArray[h]); k++; } } else for(int h = i; h<= mid ; h++ ) { Temp[k].assign(currentArray[h]); k++; } for(int i = 0; i <= high ; i++) { currentArray[i].assign(Temp[i]); } } 解决方法
从Temp数组中将值复制回currentArray时需要进行校正:
for(int i = low; i <= high ; i++) //copy from low to high { currentArray[i].assign(Temp[i]); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |