我有一个标签,一个文本字段和一个按钮。用户在文本字段中引入一系列字母,例如, “gcea”,按下按钮,标签文字变为“aceg”。
到目前为止我在.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *label;
@property (weak, nonatomic) IBOutlet UITextField *random;
- (IBAction)ok:(id)sender;
@end
到目前为止我在.m
- (IBAction)ok:(id)sender {
NSString *order = self.random.text;
NSInteger compare = order.length;
NSString *corect = @"abc";
// will insert all letters when it will actually work:)
BOOL count = YES;
for (int i=0;i<compare;i++)
{
if([corect characterAtIndex:i] == [order characterAtIndex:i])
{
//do stuff?;
}
}
self.label.text = [NSString stringWithFormat:@"%c", count];
}
@end
那我接下来要做什么呢?我的思维过程是我将我的“正确”字符串与用户通过char放入char中的字符串进行比较,并将结果打印在另一个字符串中。但是我不知道如何写这个,所以有人可以给我一些指示吗?
另外请不要使用任何预定义的方法,我想了解bools&amp;首先是for循环。
我对编程很陌生。
答案 0 :(得分:0)
我不同意其他海报,你的问题是链接帖子的副本。
有几件事:
首先:排序实际上是一个非常复杂的主题。我建议你阅读关于排序的维基文章。像冒泡排序这样的天真排序算法很容易编写,但非常低效。他们的排序时间往往会与排序的元素数量的平方有关,这对于排序更长的列表来说是个坏消息。不过,学习一种天真的排序算法是值得的。
第二:NSString,它的可变子类NSMutableString,实际上不适合按字符操纵字符串。
创建一个单字符字符串数组的建议可以作为学习练习,或者甚至可以对C字符串进行排序。
您可能希望从一个更简单的问题开始,例如排序C数组。以下是一些示例代码:
//Create an array of mixed-up integers
int array[] = {73, 12, 135, 18, 200, 1, 416};
//an outer loop for indexing into the array starting at the first element and going to
//the next-to-last item.
for (int outer = 0; outer < sizeof(array)-1; outer++)
{
//An inner loop that starts one past the current outer loop,
//and goes to the end of the array
for (int inner = outer+1; inner< sizeof(array); inner++);
{
//If the items at the outer and inner loop indexes are out of order, swap them
if (array[outer] > array[inner])
{
int temp = array[outer];
array[outer] = array[inner];
array[inner] = temp;
}
}
}
上面的代码是一种糟糕的排序算法。对于n个元素的数组,它总是进行n ^ 2个比较。但是,理解它的作用相当容易。
在标准的计算机科学术语中,这被称为O(n平方)性能,或者只是n平方性能,这是坏消息。
您可以调整上面的代码来对NSString中的字符进行排序,但这会很痛苦。正如其他人所建议的那样,你必须将你的字符串分解为一个可变数组的NSNumbers,它保存字符串中每个字符的值,然后使用上面的代码对数字数组进行排序。
在100个字符的字符串上测试排序算法。看起来很快。然后给它一个10,000个字符的字符串。这需要一段时间。那是因为它必须进行10,000 x 10,000或1亿次比较。
接下来查找类似quicksort或shell排序的类型。这些是更多的工作来弄清楚和实施,但更多,更有效。如果我没记错的话,这两种排序算法通常都具有n * log(n)性能,这是更好的。