我正在寻找你可能在面试中被问及或被要求代表你的工作或教育的一部分的伪代码问题的例子。我不是特别寻找任何领域的示例,因此它可能与设计模式、算法、数据结构、缓存策略、与软件工程和开发有关的任何事情相关,无论是简单的还是复杂的。
例如,我发现的一些常见的主要与排序和搜索技术有关:
冒泡排序:
procedure bubbleSort( A : list of sortable items ) defined as:
do
swapped := false
for each i in 0 to length(A) - 2 inclusive do:
if A[i] > A[i+1] then
swap( A[i], A[i+1] )
swapped := true
end if
end for
while swapped
end procedure
插入排序:
insertionSort(array A)
begin
for i := 1 to length[A]-1 do
begin
value := A[i];
j := i - 1;
done := false;
repeat
if A[j] > value then
begin
A[j + 1] := A[j];
j := j - 1;
if j < 0 then
done := true;
end
else
done := true;
until done;
A[j + 1] := value;
end;
end;
二分查找:
BinarySearch(A[0..N-1], value, low, high) {
if (high < low)
return -1 // not found
mid = low + ((high - low) / 2)
if (A[mid] > value)
return BinarySearch(A, value, low, mid-1)
else if (A[mid] < value)
return BinarySearch(A, value, mid+1, high)
else
return mid // found
}
如果许多人分享他们的想法和经验,我们也许能够建立一个像样的伪代码算法和问题列表。
作为练习,我希望自己提出伪代码表示。因此,即使您找不到伪代码示例,但您认为以这种方式表示它是一个理想的概念,这也会有所帮助。
我也有一些与该主题相关的问题:
- 你之前在面试中被要求写过哪些伪代码?
- 这些问题是否往往与一两个函数长的简短、简单的算法有关?
- 编写伪代码时是否应避免使用特定于语言的结构?由于表示与语言无关,因此不使用每种语言中不存在的 Dispose 和 foreach 等术语是否更安全?
谢谢
编辑:
我发现了一些更多的例子,当我发现更多时,我会继续编辑:
编写一个函数,使用单个字符串来反转句子中单词的顺序,而不是反转单词:
输入:“这只猫坐在垫子上,和另一只猫在一起!”
输出:“猫!另一只带垫子的猫,坐在猫上”
编写一个接受单个字符串的函数,该字符串将返回该字符串中出现次数最多的单词,忽略大小写和标点符号。如果多个单词的出现次数相同,则返回第一个出现的单词:
输入:“这只猫坐在垫子上,和另一只猫在一起!”
输出:
编写一个函数来查找某个字符串中出现次数最多的字符,忽略大小写。如果有多个字符具有相同的最高出现次数,则返回字符串中第一个出现的字符。
输入:“字符”
输出:c
编写一个反转字符串的函数
输入:“反向”
输出:“esrever”