Search
 
SCRIPT & CODE EXAMPLE
 

C

merge sort code c

/* C program for Merge Sort */
#include <stdio.h>
#include <stdlib.h>
 
// Merges two subarrays of arr[].
// First subarray is arr[l..m]
// Second subarray is arr[m+1..r]
void merge(int arr[], int l, int m, int r)
{
    int i, j, k;
    int n1 = m - l + 1;
    int n2 = r - m;
 
    /* create temp arrays */
    int L[n1], R[n2];
 
    /* Copy data to temp arrays L[] and R[] */
    for (i = 0; i < n1; i++)
        L[i] = arr[l + i];
    for (j = 0; j < n2; j++)
        R[j] = arr[m + 1 + j];
 
    /* Merge the temp arrays back into arr[l..r]*/
    i = 0; // Initial index of first subarray
    j = 0; // Initial index of second subarray
    k = l; // Initial index of merged subarray
    while (i < n1 && j < n2) {
        if (L[i] <= R[j]) {
            arr[k] = L[i];
            i++;
        }
        else {
            arr[k] = R[j];
            j++;
        }
        k++;
    }
 
    /* Copy the remaining elements of L[], if there
    are any */
    while (i < n1) {
        arr[k] = L[i];
        i++;
        k++;
    }
 
    /* Copy the remaining elements of R[], if there
    are any */
    while (j < n2) {
        arr[k] = R[j];
        j++;
        k++;
    }
}
 
/* l is for left index and r is right index of the
sub-array of arr to be sorted */
void mergeSort(int arr[], int l, int r)
{
    if (l < r) {
        // Same as (l+r)/2, but avoids overflow for
        // large l and h
        int m = l + (r - l) / 2;
 
        // Sort first and second halves
        mergeSort(arr, l, m);
        mergeSort(arr, m + 1, r);
 
        merge(arr, l, m, r);
    }
}
 
/* UTILITY FUNCTIONS */
/* Function to print an array */
void printArray(int A[], int size)
{
    int i;
    for (i = 0; i < size; i++)
        printf("%d ", A[i]);
    printf("
");
}
 
/* Driver code */
int main()
{
    int arr[] = { 12, 11, 13, 5, 6, 7 };
    int arr_size = sizeof(arr) / sizeof(arr[0]);
 
    printf("Given array is 
");
    printArray(arr, arr_size);
 
    mergeSort(arr, 0, arr_size - 1);
 
    printf("
Sorted array is 
");
    printArray(arr, arr_size);
    return 0;
}
Comment

how to implement merge sort using memmove in c

void insertion_sort(int* arr, int len)
{
	int i, j, si, swp;
	for(i = 0; i < len - 1; i++)
	{
		si = i;
		for(j = i + 1; j < len; j++)
		{
			if(arr[j] < arr[si])
				si = j;
		}
		if(si != i)
		{
			swp = arr[si];
			memmove(&arr[i + 1], &arr[i], (si - i) * sizeof(int));
			arr[i] = swp;
		}
	}
}
Comment

merge sort in c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
void mergeSort(int arr[], int l, int r)
{
if (l < r)
{
// Finding mid element
int m = l+(r-l)/2;
// Recursively sorting both the halves
mergeSort(arr, l, m);
mergeSort(arr, m+1, r);
 
// Merge the array
merge(arr, l, m, r);
}
}
Comment

merge sort in C

// Merge sort in C

#include <stdio.h>

// Merge two subarrays L and M into arr
void merge(int arr[], int p, int q, int r) {

  // Create L ← A[p..q] and M ← A[q+1..r]
  int n1 = q - p + 1;
  int n2 = r - q;

  int L[n1], M[n2];

  for (int i = 0; i < n1; i++)
    L[i] = arr[p + i];
  for (int j = 0; j < n2; j++)
    M[j] = arr[q + 1 + j];

  // Maintain current index of sub-arrays and main array
  int i, j, k;
  i = 0;
  j = 0;
  k = p;

  // Until we reach either end of either L or M, pick larger among
  // elements L and M and place them in the correct position at A[p..r]
  while (i < n1 && j < n2) {
    if (L[i] <= M[j]) {
      arr[k] = L[i];
      i++;
    } else {
      arr[k] = M[j];
      j++;
    }
    k++;
  }

  // When we run out of elements in either L or M,
  // pick up the remaining elements and put in A[p..r]
  while (i < n1) {
    arr[k] = L[i];
    i++;
    k++;
  }

  while (j < n2) {
    arr[k] = M[j];
    j++;
    k++;
  }
}

// Divide the array into two subarrays, sort them and merge them
void mergeSort(int arr[], int l, int r) {
  if (l < r) {

    // m is the point where the array is divided into two subarrays
    int m = l + (r - l) / 2;

    mergeSort(arr, l, m);
    mergeSort(arr, m + 1, r);

    // Merge the sorted subarrays
    merge(arr, l, m, r);
  }
}

// Print the array
void printArray(int arr[], int size) {
  for (int i = 0; i < size; i++)
    printf("%d ", arr[i]);
  printf("
");
}

// Driver program
int main() {
  int arr[] = {6, 5, 12, 10, 9, 1};
  int size = sizeof(arr) / sizeof(arr[0]);

  mergeSort(arr, 0, size - 1);

  printf("Sorted array: 
");
  printArray(arr, size);
}
Comment

PREVIOUS NEXT
Code Example
C :: download file by command line windows 
C :: C Increment and Decrement Operators 
C :: C printf Declaration 
C :: free array in c 
C :: c get string 
C :: how to do add to an integrr in c 
C :: unox reclame harmonica tabs 
Dart :: flutter listtile shape border 
Dart :: flutter textformfield hide underline 
Dart :: flutter generate random color 
Dart :: rel canonical tag 
Dart :: flutter rounded ElevatedButton 
Dart :: multi dex flutter 
Dart :: flutter trigger show off keyboard 
Dart :: flutter remove status bar 
Dart :: flutter TextButton.icon 
Dart :: flutter snackbar color 
Dart :: flutter path join 
Dart :: velocity x circle 
Dart :: MaterialStateProperty<Color? flutter 
Dart :: flutter image asset 
Dart :: flutter flotingactionbutton with text 
Dart :: disable flutter listtile 
Dart :: space around in flutter 
Dart :: dart date add year 
Dart :: flutter get package command 
Dart :: dart get type of list 
Dart :: imageprovider flutter 
Dart :: how to make my app scrollable in flutter 
Dart :: flutter textfield align center text 
ADD CONTENT
Topic
Content
Source link
Name
2+5 =