浏览量287次
梳排序和冒泡排序的基本思想相同。换句话说,梳排序是对冒泡排序的改进。在冒泡排序技术中,每一阶段都将项目与其下一个项目进行比较。但对于梳排序,项目按特定间隔排序。完成每个阶段后,间隔都会减小。此排序的递减因子或收缩因子为1.3。这意味着完成每个阶段后,间隔除以1.3。最佳情况下的时间复杂度为O(n log n)。O(n2/2nP)(p是…阅读更多
浏览量528次
鸡尾酒排序是冒泡排序的另一种变体。在冒泡排序技术中,它总是从左到右搜索,并在最后找到最大的元素,在第二阶段,它在倒数第二个位置找到第二大的元素。这种排序技术交替地在两个方向上遍历。让我们看看算法来理解这个想法。算法鸡尾酒排序(数组, n)开始 标志:=真 开始:=0, 结束:=n-1 当标志被设置时,执行 标志:=假 对于i在范围开始到结束-1中,执行 …阅读更多
浏览量117次
在本节中,我们将看到如何计算绝对值不同的元素有多少?假设在一个数组中有一些元素,例如{5, 5, 6, -5, 8, 2, -2, 1},所以有8个元素。但是有5个元素{5, 6, 8, 2, 1}是不同的。-5和5不被认为是不同的,因为它们的绝对值相同。为了解决这个问题,我们将使用集合数据结构。在集合中不允许重复元素。当我们将项目插入集合时,我们将只推送…阅读更多
浏览量159次
在这里,我们将看到如何找到数组中所有素数之和与所有非素数之和的绝对差。为了解决这个问题,我们必须检查一个数是否为素数。一种可能的素性测试方法是检查一个数是否不能被2到该数平方根之间的任何数整除。所以这个过程将花费𝑂(√𝑛)的时间。然后得到总和并尝试找到绝对差。算法diffPrimeNonPrimeSum(arr)开始 sum_p := arr中所有素数的和 sum_np := …阅读更多
浏览量148次
在这里,我们将看到如何找到数组中所有素数的乘积与所有非素数的乘积的绝对差。为了解决这个问题,我们必须检查一个数是否为素数。一种可能的素性测试方法是检查一个数是否不能被2到该数平方根之间的任何数整除。所以这个过程将花费𝑂(√𝑛)的时间。然后得到乘积并尝试找到绝对差。算法diffPrimeNonPrimeProd(arr)开始 prod_p := arr中所有素数的乘积 prod_np := …阅读更多
浏览量383次
在这里,我们将看到如何获取数字N的前X位和后X位的差异。数字和X是给定的。为了解决这个问题,我们必须找到数字的长度,然后使用模运算符截取后x位数字。之后,除了前x位数字之外,从数字中截取所有数字。然后得到差值,并返回结果。设数字为N = 568424。X为2,所以前两位数字为56,后两位数字为24。差值为(56 - 24) = 32。算法diffFirstLastDigits(N, X)开始 …阅读更多
浏览量218次
在本节中,我们将看到如何获得四次方程根的和与根的积之间的绝对差?四次方程如下:𝑎𝑥4+𝑏𝑥3+𝑐𝑥2+𝑑𝑥+𝑒我们可以解方程,然后尝试通过一些常规过程来得到根的乘积和,但这需要很长时间,这种方法效率不高。在这种类型的方程中,我们有两个公式。根的和总是−𝑏∕𝑎,根的积总是𝑒∕𝑎。所以我们只需要找到∣−𝑏∕𝑎−…阅读更多
浏览量225次
在这里,我们将看到选择排序的一些改进。我们知道选择排序的工作原理是从数组中取出最小或最大元素,并将该元素放在正确的位置。在这种方法中,我们希望同时对数组进行排序。在这里,我们将同时取最大值和最小值,然后从两端对数组进行排序。让我们看看算法来更好地理解。算法双向选择排序(arr, n)开始 对于i := 0,j := n-1,i增加1,j减少1,直到i>=j,执行 min := …阅读更多
浏览量734次
在这里,我们将看到一个程序,它可以判断两个字符串是否为彼此的旋转。字符串的旋转是这样的:假设两个字符串是S1 = ‘HELLO’,S2 = ‘LOHEL’所以它们是彼此的旋转。将HELLO向左旋转三个位置,它将变成LOHEL。为了解决这个问题,我们将第一个字符串与其自身连接起来,然后检查第二个字符串是否出现在连接的字符串中。所以对于HELLO,它将是HELLOHELLO。然后这个连接的字符串包含LOHEL。[HELLOHELLO]。算法isRotation(str1, str2)开始 如果…阅读更多
浏览量72次
我们知道二分查找算法比线性查找算法更好。该算法执行所需的时间为O(log n)。尽管在大多数情况下,实现的代码都存在一些问题。让我们考虑一下如下所示的一个二分查找算法函数:示例int binarySearch(int array[], int start, int end, int key){ 如果(start key) 返回binarySearch(array, start, mid-1, key); 返回binarySearch(array, mid+1, end, key); } 返回-1; }该算法将一直运行良好,直到start和end达到一个很大的数字。如果(start + end) …阅读更多