Pagini recente » Cod sursa (job #1085743) | Cod sursa (job #340344) | Cod sursa (job #1358004) | Cod sursa (job #2469468) | Cod sursa (job #2547140)
package com.company;
import java.io.*;
import java.util.Scanner;
public class Main {
public static void swap(int a, int b) {
int aux = a;
a = b;
b = aux;
}
public static int partition(int array[], int left, int right) {
int pivot = array[right], l = left;
for(int i = left; i < right; i++)
if(array[i] < pivot) {
System.out.println(i + " " + l);
int aux = array[i];
array[i] = array[l];
array[l] = aux;
l++;
}
int aux = array[right];
array[right] = array[l];
array[l] = aux;
return l;
}
public static void quickSort(int array[], int left, int right) {
if(left >= right)
return;
int mid = partition(array, left, right);
quickSort(array, left, mid - 1);
quickSort(array, mid + 1, right);
}
public static void merge(int array[], int left, int mid, int right) {
int a1[] = new int[100], a2[] = new int[100];
for(int i = 0; i < mid - left + 1; i++)
a1[i] = array[left + i];
for(int i = 0; i < right - mid; i++)
a2[i] = array[mid + i + 1];
int i = 0, j = 0, k = 0;
while(i < (mid - left + 1) && j < (right - mid)) {
if(a1[i] < a2[j]) {
array[k] = a1[i];
i++;
}
else {
array[k] = a2[j];
j++;
}
k++;
}
while(i < (mid - left + 1)) {
array[k] = a1[i];
i++;
k++;
}
while(j < (right - mid)) {
array[k] = a2[j];
j++;
k++;
}
for(i = 0; i < array.length; i++)
System.out.print(array[i] + " ");
System.out.println();
}
public static void mergeSort(int array[], int left, int right) {
if(left >= right)
return;
mergeSort(array, left, (left + right) / 2);
mergeSort(array, (left + right) / 2 + 1, right);
merge(array, left, (left + right) / 2, right);
}
public static void main(String[] args) throws IOException {
int array[] = new int[100];
int n;
File fileIn = new File("algsort.in");
File fileOut = new File("algsort.out");
Scanner scanner = new Scanner(fileIn);
PrintWriter printer = new PrintWriter(fileOut);
n = scanner.nextInt();
for(int i = 0; i < n; i++)
array[i] = scanner.nextInt();
quickSort(array, 0, n - 1);
for(int i = 0; i < n; i++)
printer.print(array[i] + " ");
printer.close();
}
}