-
你在复制它,对吧?
int sl_list::search_sl_list(t *v,int n,t x)
类 sl 列表在哪里? 您想使用模板,是否声明了模板?
如果你只是在做数字排序和搜索,就没有必要使用类和模板,对于我们初学者来说,你只需要能够实现该功能。 我给你写一段话。
int search(int a,size t len,int key) 在长度为 len 的数组 A 中查找整数键
len = sizeof(a) / sizeof(a[0]);
int left = 0,right = len - 1;二分法查找,两个边界,左和右
while(1)
mid = (left + right) / 2;
if(key > a[mid])
left = mid + 1;
else if(key < a[mid]
right = mid - 1; else
break;
return mid;返回下表。
if (right == left )
cout <<" not found ."
return -1;
-
选择方法的算法:
假设你需要对 10 个数字进行排序,然后先找到 10 个数字中最小的一个数字,然后用 10 个数字中的第一个(下标 0)交换位置,留下 9 个数字(这 9 个数字比刚才选择的数字大),然后选择这 9 个数字中最小的一个,并与第二个位置的数字(下标 1)交换它们, 所以还剩下 8 个数字(这 8 个数字比刚才选择的数字大)。
以此类推,当剩下两个数字时,选择两个数字中最小的一个,放在第9个位置(下标8),这样就只剩下一个数字了。 这个数字已经在最后一位数字(下标 9)中,因此无需再次选择。 因此,对于 10 个数字排序,总共需要选择 9 次(n 个数字排序需要选择 n-1 次)。
-
山排序是按照增量将关键字分成多个组,对每组使用插入排序,然后减小增量,重复一些过程,当增量为 1 时使用插入排序对关键字进行排序。
在第一个增量为 5 的情况下,给定的关键字可以按如下方式分组:
18 Hill 的排序组是指上面数组中的列。 例如,12、28、18 是一个组,2、4 是另一个组。
划分组后,只需对组进行插入和排序,结果为:
28 按行读取是第一个排序的结果:12、2、10、20、6、18、4、16、30、8、28。
这是房东的结果。
如果要继续完成,则需要减少增量。
假设增量减少到 3,则第一个结果将分组为 3 并重复。 然后将增量减小到 1,并执行直接插入排序。
-
1.排序算法的实际应用当然是排序。 它将用于实际应用,例如数据统计。
对一组数据进行排序还有助于以后的数据查找。 重要的是要知道,在有序数组中查找和在随机无序数组中查找的时间复杂度和系统成本之间存在着天壤之别。
2.算法复杂度实际上是一个估计值,即 o(n)。 首先,o 此操作定义为:如果 f(n) 是正整数 n 的函数,则 xn
o(f(n)) 表示存在一个正常数 m,使得当 n 大于或等于整数 n0 时,xn 小于或等于 m 乘以 f(n)。 这在算法中的实际意义如下:
例如,要执行排序算法,最多需要执行 5n+7 个命令(语句):最多表示循环在执行过程中完全执行,即例如,如果循环条件为 1-n,则循环最多可以执行 n 次。 如果循环中有 5 个基本语句(包括递增循环变量 i++),则有 5n 个语句。
然后根据上面 o 函数的定义,这次 xn
5n7。注意,当 n 大于或等于 7 时,5n+7 小于或等于 6n,也就是说我们可以把 6 看作 m,把 n 看作 f(n),所以可以说这个算法的时间复杂度是 o(n)。 对于其他 o(n2), o(n
logn)等。在计算执行的命令总数时,“最坏情况”(从循环的初始条件到循环的最终条件,条件分支也应考虑最大可能情况),然后每个基本语句(例如赋值、比较等)都应被考虑在内。
你好! 外观:0x???指令引用的 0x ???记忆。 内存不能"read"或"written"。答:【原件】严禁转载 >>>More
它应该是 fn(5,4),A 的初始值是 4。
在本例中,A++ 实际上返回 a first 的值,然后将 1 加到 a。 >>>More