使用C 中的一系列字符串的选择排序
Using selection sort with an array of strings in c++
我遇到问题,在此选择上产生正确的结果。我觉得代码好像是正确的,逻辑有效,但是据我当前的理解,我得到的结果是不正确的。这是我的代码:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
using namespace std;
// Function prototypes
void selectionSort(string[], int);
string linearSearch(string[]);
// Declare variables
const int MAX_FRIENDS = 250;
int currentIteration = 0;
主:
int main()
{
// Declare stream file
fstream names;
names.open("myFriends.txt");
string friends[MAX_FRIENDS];
while(getline(names,friends[currentIteration])){
currentIteration++;
}
cout << "Before Sort:nn";
for(int i = 0; i < currentIteration; i++){
cout << "Index " << i << ": " << friends[i] << endl;
}
selectionSort(friends,5);
cout << "nAfter Sort: nn";
for(int i = 0; i < currentIteration; i++){
cout << "Index " << i << ": " << friends[i] << endl;
}
system("pause");
return 0;
}
功能声明
void selectionSort(string arr[], int num){
// Declare Necessary Variables
int startScan,minIndex, index;
string minValue;
for(startScan = 0; startScan < (num - 1); startScan++){
index = startScan;
minIndex = startScan;
minValue = arr[startScan];
for(index = (startScan + 1); index < num; index++){
if(arr[index] < minValue){
minValue = arr[index];
minIndex = index;
}
index++;
}
arr[minIndex] = arr[startScan];
arr[startScan] = minValue;
}
}
我正在使用我的朋友的文本文件,该文件包含以下顺序
- 塞缪尔说
- 路易丝·斯蒂芬
- Stephen Wakefield
- 帕蒂·安德森(Patty Anderson(
- 约翰·胡佛
当我运行选择排序时,我以此顺序获得了此序列。
- 路易丝·斯蒂芬
- 约翰·胡佛
- 帕蒂·安德森(Patty Anderson(
- 塞缪尔说
- Stephen Wakefield
据我了解,这些不是正确的值。请告知
您是两次增量index
。
for(index = (startScan + 1); index < num; index++){ // increment it here
if(arr[index] < minValue){
minValue = arr[index];
minIndex = index;
}
index++; // and increment it also here
}
因此,您只检查数组的其他每个元素。
摆脱第二个index++;
行。
至少有一个逻辑错误。index
在您的内部循环的迭代中被递增两次。
相关文章:
- C++选择排序算法中的逻辑错误
- 高级选择排序 - 在一次迭代中搜索两个元素
- 选择排序C++(已修改)并非适用于所有情况
- C++为什么我的指针选择排序中存在分段错误?
- 为什么这个选择排序算法仍然切换一个元素,当它已经是其他元素中最小的元素时?
- 选择排序时交换函数调用的数量和完成的交换次数是否相同?
- 如何使用cpp编写选择排序算法以降序对元素列表进行排序?
- 使用选择排序对数组数据结构进行排序,但它不起作用
- c++ 选择排序在特定情况下不起作用
- 修改的选择排序,选择最大的数字,然后交换到最后
- 如何选择排序一些结构
- 选择排序以查找未排序数组中的最大数字
- 我的选择排序代码是否存在导致它跳过数组中的元素的问题?
- 给定数组范围的选择排序问题
- 选择排序算法生成无序结果
- 使用C 中的一系列字符串的选择排序
- 从递归向后选择排序函数调用 max 和交换函数
- 为 STL 列表编写选择排序
- 跟踪选择排序中的交换和比较次数
- 字母选择排序程序的问题