blob: 630dacd85ddd7e15737c5428e1a644d802ccd23a [file] [log] [blame]
/*
* Copyright 1999,2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package sort;
import org.apache.log4j.Logger;
import org.apache.log4j.NDC;
/**
Example code for log4j to viewed in conjunction with the {@link
examples.Sort Sort} class.
<p>SortAlgo uses the bubble sort algorithm to sort an integer
array. See also its <b><a href="doc-files/SortAlgo.java">source
code</a></b>.
@author Ceki G&uuml;lc&uuml; */
public class SortAlgo {
static final String className = SortAlgo.class.getName();
static final Logger CAT = Logger.getLogger(className);
static final Logger OUTER = Logger.getLogger(className + ".OUTER");
static final Logger INNER = Logger.getLogger(className + ".INNER");
static final Logger DUMP = Logger.getLogger(className + ".DUMP");
static final Logger SWAP = Logger.getLogger(className + ".SWAP");
int[] intArray;
SortAlgo(int[] intArray) {
this.intArray = intArray;
}
void bubbleSort() {
CAT.info("Entered the sort method.");
for (int i = intArray.length - 1; i >= 0; i--) {
NDC.push("i=" + i);
OUTER.debug("in outer loop.");
for (int j = 0; j < i; j++) {
NDC.push("j=" + j);
// It is poor practice to ship code with log staments in tight loops.
// We do it anyway in this example.
INNER.debug("in inner loop.");
if (intArray[j] > intArray[j + 1]) {
swap(j, j + 1);
}
NDC.pop();
}
NDC.pop();
}
}
void dump() {
if (!(this.intArray instanceof int[])) {
DUMP.error("Tried to dump an uninitialized array.");
return;
}
DUMP.info("Dump of integer array:");
for (int i = 0; i < this.intArray.length; i++) {
DUMP.info("Element [" + i + "]=" + this.intArray[i]);
}
}
void swap(int l, int r) {
// It is poor practice to ship code with log staments in tight
// loops or code called potentially millions of times.
SWAP.debug(
"Swapping intArray[" + l + "]=" + intArray[l] + " and intArray[" + r
+ "]=" + intArray[r]);
int temp = this.intArray[l];
this.intArray[l] = this.intArray[r];
this.intArray[r] = temp;
}
}