sort
Shell Sort
Shell sortShell sort is a generalized version of the insertion sort algorithm. It first sorts elements that are far apart from each other and successively reduces the interval between the elements to be sorted.
Example :
Shell sortShell sort is a generalized version of the insertion sort algorithm. It first sorts elements that are far apart from each other and successively reduces the interval between the elements to be sorted.
Example :
Algorithm Shellsort [A (0..n-1)]
// Sort a given array by Shell sort.
// Input : An array A(0�n-1) of orderable elements.
// Output : Array A [0�n-1] sorted in non- decreasing order .
shellSort(array, size)
for interval i <- size/2n down to 1
for each interval "i" in array
sort all the elements at interval "i"
end shellSort
#include < stdio.h >
#include < stdbool.h >
#define MAX 7
int intArray[MAX] = {4,6,3,2,1,9,7};
void printline(int count) {
int i
for(i = 0;i < count-1;i++) {
printf("=");
}
printf("=\n");
}
void display() {
int i;
printf("[");
// navigate through all items
for(i = 0;i < MAX;i++) {
printf("%d ",intArray[i]);
}
printf("]\n");
}
void shellSort() {
int inner, outer;
int valueToInsert;
int interval = 1;
int elements = MAX;
int i = 0;
while(interval <= elements/3) {
interval = interval*3 +1;
}
while(interval > 0) {
printf("iteration %d#:",i);
display();
for(outer = interval; outer < elements; outer++) {
valueToInsert = intArray[outer];
inner = outer;
while(inner > interval -1 && intArray[inner - interval]
>= valueToInsert) {
intArray[inner] = intArray[inner - interval];
inner -=interval;
printf(" item moved :%d\n",intArray[inner]);
}
intArray[inner] = valueToInsert;
printf(" item inserted :%d, at position :%d\n",valueToInsert,inner);
}
interval = (interval -1) /3;
i++;
}
}
int main() {
printf("Input Array: ");
display();
printline(50);
shellSort();
printf("Output Array: ");
display();
printline(50);
return 1;
}
Code
public class Demo {
int shell_sort(int my_arr[]) {
int arr_len = my_arr.length;
for (int gap = arr_len / 2; gap > 0; gap /= 2) {
for (int i = gap; i < arr_len; i += 1) {
int temp = my_arr[i];
int j;
for (j = i; j >= gap && my_arr[j - gap] > temp; j -= gap)
my_arr[j] = my_arr[j - gap];
my_arr[j] = temp;
}
}
return 0;
}
public static void main(String args[]) {
int my_arr[] = { 12, 34, 54, 2, 3 };
Demo my_instance = new Demo();
my_instance.shell_sort(my_arr);
System.out.println("The array, after performing shell sort is : ");
int arr_len = my_arr.length;
for (int i = 0; i < arr_len; ++i)
System.out.print(my_arr[i] + " ");
System.out.println();
}
}
Code
def shell_sort(my_list, list_len):
interval = list_len // 2
while interval > 0:
for i in range(interval, list_len):
temp = my_list[i]
j = i
while j >= interval and my_list[j - interval] > temp:
my_list[j] = my_list[j - interval]
j -= interval
my_list[j] = temp
interval //= 2
my_list = [ 45, 31, 62, 12, 89, 5, 9, 8]
list_len = len(my_list)
print ("The list before sorting is :")
print(my_list)
shell_sort(my_list, list_len)
print ("\nThe list after performing shell sorting is :")
print(my_list)
Code
45 31 62 12 89 5 9 8
5 8 9 12 31 45 62 89
Selection Sort
Quick Sort