Style Good Style: • Consistent Indentation • Comments Appropriately Detailed • Self-Explanatory Variable Names Bad Style: • Single-letter or cryptic variable names • Lack of comments; paragraph comments
Merge Sort
Sorting Algorithm which recursively breaks lists into halves, then combines the ‘sorted’ base cases into larger sorted lists.
Merge Sort
Merge Sort What sort of asymptotic runtime does this algorithm have? O(n log n)
Pointers • Data stored in memory has both a value and a location. • Pointers contain the memory address of some piece of data. • * pointer contains address to a piece of data of that type
Pointers • & - Address operator; gets the address of a variable. • * - Dereference operator; gets value found at the memory address to which a pointer points.
Pointers char letter = ‘A’; char* ptr = &letter; // get address of variable char new_letter = *ptr; // dereference to get value
‘A’ letter
‘A’ ptr
new_letter
Pointers Pointer arithmetic: adding n to a pointer shifts the pointer over by
n*sizeof() bytes
Pointers int x; int* y = &x; y += 1;
If the address of x is 0x04, what is y now?
Pointers char x; char* y = &x; y += 1;
If the address of x is 0x04, what is y now? What about now?
Pointer Practice int a = 3, b = 4, c = 5; int *pa = &a, *pb = &b, *pc = &c; a = b * c; a *= c; b = *pa;
pc = pa; *pb = b * c; c = (*pa) * (*pc); *pc = a * (*pb);
Dynamic Memory Allocation • malloc(int num_bytes) – Reserves a region of memory on the heap of size num_bytes. – Returns the address of this region of memory.
• free(void* pointer) – Takes as an argument the address of some region of memory reserved by malloc. – Frees up the memory which was reserved.
Dynamic Memory Allocation When using malloc: Always check whether it returns ‘null’. Free allocated memory exactly once.
char* x = malloc(sizeof(char)*10); free(x);
Stack vs. Heap •Contains local variables. •Function calls create new ‘frames’ on the stack.
Stack
Memory belonging to process.
•Contains global variables. •Dynamically allocated memory reserved on heap.
Data stored in memory has both a value and a location. ⢠Pointers contain the memory address of some piece of data. ⢠* pointer contains address to a ...
Data stored in memory has both a value and a location. ⢠Pointers contain the memory address of some piece of data. ⢠* pointer contains address to a ...
On input of n elements: If n < 2. Return. Else. Sort left half of elements. Sort right half of elements. Merge sorted halves. Page 3. 3. 2. 5. 4. 6. 2. 5. 3. 4. 6. 1. 1. Page 4. Halve until each subarray is size 1. 4. 3. 2. 5. 4. 6. 2. 5. 3. 4. 6. 6.
A condi on may have two values: true or false. ⢠May be expressed as a logical expression or a. 'bool' variable. ⢠Can be thought of as a yes/no ques on, or a.
Free Candy. â« Time for Change. â« I Saw You ... Free Candy. â« Seriously, in the CS50 ... ask user for an integer printf("Give me an integer between 1 and 10: ");.
Go to middle if k < value at middle search for k between first and the one before the middle if k > value at middle search for k between one after the middle and last if k = value at middle return true. If you haven't found k after this loop, return
Oct 8, 2010 - Go ahead and execute the command below: hostname. Recall that cloud.cs50.net is actually a cluster of servers. That command tells you the name of the specific server in the cluster that you happen to be connected to at the moment. Take
We can still conceptualize & prototype using the right language abstractions. â» If we understand relationships between linguistic abstractions, we can realize ...
Like searching through the phone book. ⢠Identify ... as you go. If array[i + 1] < array[i], swap them! ... Grab the smallest and swap it with whatever is at the front of ...
What you will learn in. CS 179. ⢠Discover and understand people's latent needs. ⢠Invent and construct prototypes. ⢠Design for people different than yourself.
what type are these values? â« how do we initialize them? â« don't forget! â« swap tiles for even d ... Questions? Please email me feedback: [email protected].
11: * Based on Eric Roberts' genlib.h and simpio.h. 12: *. 13: * The latest version of this file can be found at. 14: * http://www.cs50.net/pub/releases/cs50/cs50.h.
In the context of files, Linux uses \n to end lines, Mac OS uses \r, and Windows ... format string's expectation of a leading %f, and so neither f nor c get filled with a ...
break â tell the program to 'pause' at a certain point (either a function or a line number) step â 'step' to the next executed statement next â moves to the next ...
What you will learn in. CS 179. ⢠Discover and understand people's latent needs. ⢠Invent and construct prototypes. ⢠Design for people different than yourself.
Computer Science 124 : Who Should Take It. ⢠CS 124 is all about developing techniques for solving problems. ⢠This is what CS is all about! â Take a problem.
Formal Systems and Computation. ⢠Two ways to look at it. 1. Study of problems and computers with all their physicality abstracted away q0 q1 q2 q3 a a a a b b.