אלגוריתם פועל במקום אם בכל רגע נתון במהלך פעולתו, כמות זכרון העזר בה הוא משתמש (מעבר לזכרון שצורכים משתני הקלט שלו) הינה קבועה, ובפרט אינה תלוי בגודל הקלט.
העובדה שהמגבלה חלה על הזכרון ברגע נתון משמעותה שיתכן שכל תוכן הקלט יימצא בשלב כזה או אחר של הריצה בזכרון עזר, אבל לא בבת אחת.
נדגים באמצעות פונקציות המיון של פייתון.
הפונקציה ()sorted מייצרת רשימה חדשה, שונה מהרשימה המקורית, שהינה ממוינת. ברור שלצורך פעולתה הפונקציה חייבת להקצות זכרון נוסף (עבור רשימת הפלט) שגודלו כגודל הזכרון שצורכת הרשימה המקורית, ולכן האלגוריתם לא יכול להיות במקום.
הפונקציה ()sort, לעומת זאת, פועלת על רשימת הקלט ומשנה אותה. נשים לב שזה עדיין לא בהכרח אומר שהפונקציה אינה מקצה זכרון עזר נוסף בגודל לא-קבוע במהלך פעולתה, ולכן כדי לוודא שהיא פועלת במקום יש לבדוק את התיעוד שלה ואולי אף להעיף מבט במימוש.
במאמר מוסגר, למונח ״במקום״ מייחסים משמעויות מעט שונות בהקשרים שונים, בעיקר כיוון שבפועל קשה מאד לוודא שגודל זכרון העזר של תכנית כלל אינו תלוי בגודל הקלט; בפרט, אפילו שמירת אינדקס לתוך רשימה עלולה לצרוך כמות זכרון שהיא פונקציה של גודל הרשימה (איזו מין פונקציה?).
בהקשר של התרגיל שלנו, נסתפק בלוודא שכמות התאים שמועתקת מתוך רשימת הקלט לזכרון חיצוני בכל רגע נתון היא קבועה. לדוגמה, העתקת שני תאים מתוך הרשימה לשני משתני עזר היא חוקית, אבל ביצוע slicing למחצית הרשימה אינה חוקית (שימו לב שעצם הקריאה לאופרטור ה slicing מייצרת עותק של החלק החתוך, אפילו אם לא שמרנו את התוצאה למשתנה עזר).