objective-c常用算法总结

找到两个非负整数的最大公约数

    unsigned int u, v, temp;
    
    NSLog(@"please type in two nonnegative integers");
    scanf("%u%u", &u, &v);
    
    while (v != 0) {
        temp = u % v;
        u = v;
        v = temp;
    }
    NSLog(@"Their greatest common divisor is %u", u);

颠倒显示数字的位数

    int number, right_digit;
    
    NSLog(@"Enter your number.");
    scanf("%i", &number);
    
    while (number != 0) {
        right_digit = number % 10;
        NSLog(@"%i", right_digit);
        number /= 10;
    }

快速寻得一区间内的所有质数

思路 :对最大值开方,若判断数不是从起始值到开方值中任何数的倍数,那么他就是质数。

    int numberStart, numberEnd, minimumCommonDivisor;
    BOOL isPrime;
    NSMutableArray *primeArray = [[NSMutableArray alloc] init];
    
    NSLog(@"please input range");
    NSLog(@"pealse input startNumber");
    scanf("%i", &numberStart);
    NSLog(@"pealse input endNumber");
    scanf("%i", &numberEnd);
    minimumCommonDivisor = (int)sqrt(numberEnd) + 1;
    
    for (int i = numberStart; i <= numberEnd; i++) {
        isPrime = YES;
        
        for (int j = 2; j < minimumCommonDivisor; j++) {
            if ((i % j == 0 && i != j) || i == 1) {
                isPrime = NO;
                break;
            }
        }
        if (isPrime) {
            NSNumber *primeNumber  = [NSNumber numberWithInt:i];
            [primeArray addObject:primeNumber];
        }
    }
    NSLog(@"%@", primeArray);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会根据您的要求回答这个问题。 1、K-means算法的基本介绍以及使用的语言环境介绍 K-means算法是一种基于聚类的无监督学习算法,可以将数据集分成K个不同的簇。该算法的基本思想是通过迭代将数据点分配到最近的簇中,并根据簇中心的位置重新计算簇的位置,直到满足收敛条件为止。K-means算法常用于数据挖掘、图像分割和信号处理等领域。 K-means算法可以使用多种编程语言实现,其中包括Python、R、MATLAB、Java和C++等。Python是最常用的语言之一,因为它有许多流行的机器学习库,例如Scikit-learn、TensorFlow和PyTorch等。这些库为开发人员提供了许多有用的函数和类,可以轻松地实现K-means算法。 2、算法的运行举例(截图或者图表)以及性能比较 下面是一个使用Python实现的K-means算法的示例代码和结果: ```python from sklearn.cluster import KMeans import numpy as np X = np.array([[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]]) kmeans = KMeans(n_clusters=2, random_state=0).fit(X) print(kmeans.labels_) print(kmeans.predict([[0, 0], [4, 4]])) print(kmeans.cluster_centers_) ``` 该代码使用Scikit-learn库,将一个6个数据点的二维数组分为两个簇。运行结果如下: ``` [1 1 1 0 0 0] [1 0] [[4. 2.] [1. 2.]] ``` 从结果中可以看出,算法将前三个数据点分配到簇1,后三个数据点分配到簇0,并且可以根据新的数据点预测其所属的簇。此外,还可以看到簇的中心在(1, 2)和(4, 2)处。 性能比较方面,K-means算法的速度较快,并且在处理大规模数据集时效果良好。然而,它的缺点是需要手动选择簇的数量K,这可能会导致簇的数量过多或过少,从而影响聚类的效果。 3、算法的改进、变种以及其解决了什么具体的现实问题 K-means算法有许多改进和变种,以下是其中一些: - K-means++算法:该算法通过改进初始簇的选择方式,使得初始簇的位置更加均匀分布,从而提高了算法的效果。 - Mini-batch K-means算法:该算法使用随机梯度下降的方式,每次只选择一部分数据点进行计算,从而降低计算成本,加快算法的速度。 - Hierarchical K-means算法:该算法将数据点分配到不同的子簇中,并将子簇组合成更大的簇,直到形成一个完整的层次结构。 - Fuzzy K-means算法:该算法使用模糊逻辑来描述数据点与簇之间的关系,每个数据点可以同时属于多个簇,从而更准确地描述数据点之间的相似度。 K-means算法可以用于许多现实问题,例如: - 市场细分:通过将顾客分为不同的簇,可以更好地理解他们的需求和购买行为,从而更好地定位市场。 - 图像分割:将图像中的像素分配到不同的簇中,可以将图像分割成不同的区域,从而进行更精细的图像处理和分析。 - 生物信息学:将基因分配到不同的簇中,可以更好地理解基因之间的相似度和关系,从而更好地研究生物学问题。 参考文献: 1. Arthur, D., & Vassilvitskii, S. (2007). K-means++: The advantages of careful seeding. Proceedings of the eighteenth annual ACM-SIAM symposium on Discrete algorithms, 1027-1035. 2. Sculley, D. (2010). Web-scale k-means clustering. Proceedings of the 19th international conference on World Wide Web, 1177-1178. 3. Jain, A. K., & Dubes, R. C. (1988). Algorithms for clustering data (Vol. 8). Englewood Cliffs, NJ: Prentice Hall. 4. Bezdek, J. C. (1981). Pattern recognition with fuzzy objective function algorithms. Springer US. 5. Yang, X. S. (2010). Nature-inspired metaheuristic algorithms. Luniver press.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值