Skip to editor
File
New File Ctrl+N
New Folder

Save Ctrl+S
Upload File…
Download as ZIP

Delete File

Reset Files…
View
Toggle Sidebar Ctrl+B
Toggle Terminal Ctrl+`

Word Wrap Alt+Z

Exercise Info

Theme: Dark
Font Size: 14px
Reading Mode: Default
Run
Run Code Ctrl+Enter
Save & Run F5

Clear Output
Help
Keyboard Shortcuts ?
CS173: Intro to Computer Science - Insertion Sort (3 pts)
Explorer
GitHub

Connect to GitHub to push and pull your project files to a repository.

On the page that opens, create a token with repo scope, copy it, then paste it below.

Paste the personal access token you created on GitHub with repo scope.

Click Refresh to load commit history
Exercise Info

Goals

  1. To swap two variables in memory
  2. To implement the insertion sort algorithm

Instructions

Please fill in the swap method to swap arr[i] with arr[j]. Below is some of the code we wrote in the video to setup random arrays, as well as skeleton code for insertion sort. The main method fills in a random array, prints that array, calls the insertionSort method, and then prints the result. Once this method works properly, your insertion sort code will properly sort the array.

This exercise [1] was developed by Prof. Tralie.

Hints

  • If you just say arr[i] = arr[j], then that will do half of the swap, but now you’ve overwritten what arr[i] used to be, so you’ve lost the information you need to update arr[j]. Try creating a temporary variable to store the value in arr[i] before you overwite it with what’s in arr[j].
  1. Developed by Prof. Chris Tralie ↩


The Ursinus-WebIDE by Chris Tralie (opens in new tab) and Bill Mongan (opens in new tab)

Your browser does not support WebGL. A graphical rendering canvas would appear here.


          
No suggestions. Code quality feedback will appear here.
Run your code to inspect variables.
Click Step Run above to record execution steps. Available for Python.

Run your code to see the function-call tape.

For Python, calls are recorded automatically (use Step Run on the Inspector toolbar).

For JavaScript or Java (Processing), you have to record the markers yourself. These helpers are labels — they don't call any function, they only annotate this tape.

Option 1 — sibling log (simple). Call webideTrace.tap('name', arg1, arg2) once per event. Each tap shows up as a flat sibling. Use this when you just want to know "did this code run?" or "in what order did these run?".

Option 2 — scope tracking (for nested / recursive calls). Put webideTrace.call('name', args…) as the first line inside the function body, and webideTrace.return(value) immediately before every return statement (or once at the end if the function is void). Then call the function normally from outside.

// JavaScript example
function fact(n) {
    webideTrace.call('fact', n);          // at the top
    if (n <= 1) {
        return webideTrace.return(1);     // wrap every return
    }
    let r = n * fact(n - 1);
    return webideTrace.return(r);
}
fact(4);   // now the tape shows fact(4) → fact(3) → fact(2) → fact(1)

Every call must be matched by a return. If you put three calls in a row without returns, each one ends up nested inside the previous (which is what the IDE will warn about with "no .return"). For that case use tap instead.

Not logged in java
Ln 1, Col 1
Keyboard Shortcuts

Editing & Files

Save current fileCtrlS
Run codeCtrlEnter
Save and RunF5
Toggle word wrapAltZ

View

Toggle sidebarCtrlB
Toggle terminal panelCtrl`
Focus ExplorerCtrlShiftE
Focus Terminal tabCtrlShiftT
Focus Output tabCtrlShiftO
Focus Suggestions tabCtrlShiftP

Editor Font

Increase font sizeCtrl=
Decrease font sizeCtrl-

Help

Show this dialog?
Close any dialogEsc

Tip: Within an input field, "?" types a literal question mark. Press Esc first to leave the field, then press ? to open this dialog.