Selection Sorting Lecture 21. Selection Sort Given an array of length n, –In first iteration:...

Post on 19-Dec-2015

219 views 2 download

Tags:

Transcript of Selection Sorting Lecture 21. Selection Sort Given an array of length n, –In first iteration:...

Selection SortingLecture 21

Selection Sort

• Given an array of length n,– In first iteration: Search elements 0 through

n-1 and select the smallest• Swap it with the element in location 0

– In second iteration: Search elements 1 through n-1 and select the smallest• Swap it with the element in location 1

– In third iteration: Search elements 2 through n-1 and select the smallest• Swap it with the element in location 2

– Continue in this fashion until there’s nothing left to search

Example and analysis of Selection Sort

• The Selection Sort might swap an array element with itself--this is harmless.

7 2 8 5 4

2 7 8 5 4

2 4 8 5 7

2 4 5 8 7

2 4 5 7 8

C Code of Selection Sort

void selectionSort(int list[], int size) {

int outer, inner, min; for (outer = 0; outer < size-1; outer++)

{ // outer counts down min = outer; for (inner = outer + 1; inner < size; inner++)

{ if (list[inner] < list[min])

{ min = inner; } }

// list[min] is least among list[outer]..list[list.length - 1] int temp = list[outer]; list[outer] = list[min]; list[min] = temp; }

}

7 2 8 5 4

C Code of Selection Sort

void selectionSort(int list[], int size) {

int outer, inner, min; for (outer = 0; outer < size-1; outer++)

{ // outer counts down min = outer; for (inner = outer + 1; inner < size; inner++)

{ if (list[inner] < list[min])

{ min = inner; } }

// list[min] is least among list[outer]..list[list.length - 1] int temp = list[outer]; list[outer] = list[min]; list[min] = temp; }

}

7 2 8 5 4

outer = 0min = 0

C Code of Selection Sort

void selectionSort(int list[], int size) {

int outer, inner, min; for (outer = 0; outer < size-1; outer++)

{ // outer counts down min = outer; for (inner = outer + 1; inner < size; inner++)

{ if (list[inner] < list[min])

{ min = inner; } }

// list[min] is least among list[outer]..list[list.length - 1] int temp = list[outer]; list[outer] = list[min]; list[min] = temp; }

}

7 2 8 5 4

outer = 0min = 0

inner = 1

C Code of Selection Sort

void selectionSort(int list[], int size) {

int outer, inner, min; for (outer = 0; outer < size-1; outer++)

{ // outer counts down min = outer; for (inner = outer + 1; inner < size; inner++)

{ if (list[inner] < list[min])

{ min = inner; } }

// list[min] is least among list[outer]..list[list.length - 1] int temp = list[outer]; list[outer] = list[min]; list[min] = temp; }

}

7 2 8 5 4

outer = 0min = 0

inner = 1

list [inner] = 2

list [min] = 7

C Code of Selection Sort

void selectionSort(int list[], int size) {

int outer, inner, min; for (outer = 0; outer < size-1; outer++)

{ // outer counts down min = outer; for (inner = outer + 1; inner < size; inner++)

{ if (list[inner] < list[min])

{ min = inner; } }

// list[min] is least among list[outer]..list[list.length - 1] int temp = list[outer]; list[outer] = list[min]; list[min] = temp; }

}

7 2 8 5 4

outer = 0min = 1

inner = 1

list [inner] = 2

list [min] = 7

C Code of Selection Sort

void selectionSort(int list[], int size) {

int outer, inner, min; for (outer = 0; outer < size-1; outer++)

{ // outer counts down min = outer; for (inner = outer + 1; inner < size; inner++)

{ if (list[inner] < list[min])

{ min = inner; } }

// list[min] is least among list[outer]..list[list.length - 1] int temp = list[outer]; list[outer] = list[min]; list[min] = temp; }

}

7 2 8 5 4

outer = 0min = 1

inner = 2

list [inner] = 2

list [min] = 7

C Code of Selection Sort

void selectionSort(int list[], int size) {

int outer, inner, min; for (outer = 0; outer < size-1; outer++)

{ // outer counts down min = outer; for (inner = outer + 1; inner < size; inner++)

{ if (list[inner] < list[min])

{ min = inner; } }

// list[min] is least among list[outer]..list[list.length - 1] int temp = list[outer]; list[outer] = list[min]; list[min] = temp; }

}

7 2 8 5 4

outer = 0min = 1

inner = 2

list [inner] = 8

list [min] = 2

C Code of Selection Sort

void selectionSort(int list[], int size) {

int outer, inner, min; for (outer = 0; outer < size-1; outer++)

{ // outer counts down min = outer; for (inner = outer + 1; inner < size; inner++)

{ if (list[inner] < list[min])

{ min = inner; } }

// list[min] is least among list[outer]..list[list.length - 1] int temp = list[outer]; list[outer] = list[min]; list[min] = temp; }

}

7 2 8 5 4

outer = 0min = 1

inner = 3

list [inner] = 8

list [min] = 2

C Code of Selection Sort

void selectionSort(int list[], int size) {

int outer, inner, min; for (outer = 0; outer < size-1; outer++)

{ // outer counts down min = outer; for (inner = outer + 1; inner < size; inner++)

{ if (list[inner] < list[min])

{ min = inner; } }

// list[min] is least among list[outer]..list[list.length - 1] int temp = list[outer]; list[outer] = list[min]; list[min] = temp; }

}

7 2 8 5 4

outer = 0min = 1

inner = 3

list [inner] = 5

list [min] = 2

C Code of Selection Sort

void selectionSort(int list[], int size) {

int outer, inner, min; for (outer = 0; outer < size-1; outer++)

{ // outer counts down min = outer; for (inner = outer + 1; inner < size; inner++)

{ if (list[inner] < list[min])

{ min = inner; } }

// list[min] is least among list[outer]..list[list.length - 1] int temp = list[outer]; list[outer] = list[min]; list[min] = temp; }

}

7 2 8 5 4

outer = 0min = 1

inner = 4

list [inner] = 5

list [min] = 2

C Code of Selection Sort

void selectionSort(int list[], int size) {

int outer, inner, min; for (outer = 0; outer < size-1; outer++)

{ // outer counts down min = outer; for (inner = outer + 1; inner < size; inner++)

{ if (list[inner] < list[min])

{ min = inner; } }

// list[min] is least among list[outer]..list[list.length - 1] int temp = list[outer]; list[outer] = list[min]; list[min] = temp; }

}

7 2 8 5 4

outer = 0min = 1

inner = 4

list [inner] = 4

list [min] = 2

C Code of Selection Sort

void selectionSort(int list[], int size) {

int outer, inner, min; for (outer = 0; outer < size-1; outer++)

{ // outer counts down min = outer; for (inner = outer + 1; inner < size; inner++)

{ if (list[inner] < list[min])

{ min = inner; } }

// list[min] is least among list[outer]..list[list.length - 1] int temp = list[outer]; list[outer] = list[min]; list[min] = temp; }

}

2 7 8 5 4

outer = 0min = 1

inner = 4

list [inner] = 4

list [min] = 2

C Code of Selection Sort

void selectionSort(int list[], int size) {

int outer, inner, min; for (outer = 0; outer < size-1; outer++)

{ // outer counts down min = outer; for (inner = outer + 1; inner < size; inner++)

{ if (list[inner] < list[min])

{ min = inner; } }

// list[min] is least among list[outer]..list[list.length - 1] int temp = list[outer]; list[outer] = list[min]; list[min] = temp; }

}

2 7 8 5 4

outer = 1min = 1

C Code of Selection Sort

void selectionSort(int list[], int size) {

int outer, inner, min; for (outer = 0; outer < size-1; outer++)

{ // outer counts down min = outer; for (inner = outer + 1; inner < size; inner++)

{ if (list[inner] < list[min])

{ min = inner; } }

// list[min] is least among list[outer]..list[list.length - 1] int temp = list[outer]; list[outer] = list[min]; list[min] = temp; }

}

2 7 8 5 4

outer = 1min = 1

inner = 2

C Code of Selection Sort

void selectionSort(int list[], int size) {

int outer, inner, min; for (outer = 0; outer < size-1; outer++)

{ // outer counts down min = outer; for (inner = outer + 1; inner < size; inner++)

{ if (list[inner] < list[min])

{ min = inner; } }

// list[min] is least among list[outer]..list[list.length - 1] int temp = list[outer]; list[outer] = list[min]; list[min] = temp; }

}

2 7 8 5 4

outer = 1min = 1

inner = 2

list [inner] = 8

list [min] = 7

C Code of Selection Sort

void selectionSort(int list[], int size) {

int outer, inner, min; for (outer = 0; outer < size-1; outer++)

{ // outer counts down min = outer; for (inner = outer + 1; inner < size; inner++)

{ if (list[inner] < list[min])

{ min = inner; } }

// list[min] is least among list[outer]..list[list.length - 1] int temp = list[outer]; list[outer] = list[min]; list[min] = temp; }

}

2 7 8 5 4

outer = 1min = 1

inner = 3

list [inner] = 8

list [min] = 7

C Code of Selection Sort

void selectionSort(int list[], int size) {

int outer, inner, min; for (outer = 0; outer < size-1; outer++)

{ // outer counts down min = outer; for (inner = outer + 1; inner < size; inner++)

{ if (list[inner] < list[min])

{ min = inner; } }

// list[min] is least among list[outer]..list[list.length - 1] int temp = list[outer]; list[outer] = list[min]; list[min] = temp; }

}

2 7 8 5 4

outer = 1min = 1

inner = 3

list [inner] = 5

list [min] = 7

C Code of Selection Sort

void selectionSort(int list[], int size) {

int outer, inner, min; for (outer = 0; outer < size-1; outer++)

{ // outer counts down min = outer; for (inner = outer + 1; inner < size; inner++)

{ if (list[inner] < list[min])

{ min = inner; } }

// list[min] is least among list[outer]..list[list.length - 1] int temp = list[outer]; list[outer] = list[min]; list[min] = temp; }

}

2 7 8 5 4

outer = 1min = 3

inner = 3

list [inner] = 5

list [min] = 5

C Code of Selection Sort

void selectionSort(int list[], int size) {

int outer, inner, min; for (outer = 0; outer < size-1; outer++)

{ // outer counts down min = outer; for (inner = outer + 1; inner < size; inner++)

{ if (list[inner] < list[min])

{ min = inner; } }

// list[min] is least among list[outer]..list[list.length - 1] int temp = list[outer]; list[outer] = list[min]; list[min] = temp; }

}

2 7 8 5 4

outer = 1min = 3

inner = 4

list [inner] = 5

list [min] = 5

C Code of Selection Sort

void selectionSort(int list[], int size) {

int outer, inner, min; for (outer = 0; outer < size-1; outer++)

{ // outer counts down min = outer; for (inner = outer + 1; inner < size; inner++)

{ if (list[inner] < list[min])

{ min = inner; } }

// list[min] is least among list[outer]..list[list.length - 1] int temp = list[outer]; list[outer] = list[min]; list[min] = temp; }

}

2 7 8 5 4

outer = 1min = 3

inner = 4

list [inner] = 4

list [min] = 5

C Code of Selection Sort

void selectionSort(int list[], int size) {

int outer, inner, min; for (outer = 0; outer < size-1; outer++)

{ // outer counts down min = outer; for (inner = outer + 1; inner < size; inner++)

{ if (list[inner] < list[min])

{ min = inner; } }

// list[min] is least among list[outer]..list[list.length - 1] int temp = list[outer]; list[outer] = list[min]; list[min] = temp; }

}

2 7 8 5 4

outer = 1min = 4

inner = 4

list [inner] = 4

list [min] = 4

C Code of Selection Sort

void selectionSort(int list[], int size) {

int outer, inner, min; for (outer = 0; outer < size-1; outer++)

{ // outer counts down min = outer; for (inner = outer + 1; inner < size; inner++)

{ if (list[inner] < list[min])

{ min = inner; } }

// list[min] is least among list[outer]..list[list.length - 1] int temp = list[outer]; list[outer] = list[min]; list[min] = temp; }

}

2 4 8 5 7

outer = 1min = 4

inner = 4

list [inner] = 4

list [min] = 4

C Code of Selection Sort

void selectionSort(int list[], int size) {

int outer, inner, min; for (outer = 0; outer < size-1; outer++)

{ // outer counts down min = outer; for (inner = outer + 1; inner < size; inner++)

{ if (list[inner] < list[min])

{ min = inner; } }

// list[min] is least among list[outer]..list[list.length - 1] int temp = list[outer]; list[outer] = list[min]; list[min] = temp; }

}

2 4 8 5 7

outer = 2min = 2