Algorithm: Inverse in place-2
来源:互联网 发布:网络播放器怎么安装 编辑:程序博客网 时间:2024/05/29 16:51
Algorithm J
Algorithm J (Inverse in place). This algorithm has the same effect as Algo-
rithm I but uses a different method.
J1. [Negate all] Set X[k] <– -X[k], for 1 <= k <= n. Also set m <– n.
J2. [Initialize j] Set j <– m.
J3. [Find negative entry.] Set i <– X[j]. If i > 0, set j <– i and repeat this step.
J4. [Invert.] Set X[j] <– X[-i], X[-i] <– m.
J5. [Loop on m.] Decrease m by 1; if m > 0, go back to J2. Otherwise the
algorithm terminates. |
Data table
Java program
/** * Created with IntelliJ IDEA. * User: 1O1O * Date: 12/18/13 * Time: 6:52 PM * :)~ * Inverse in place-2:ALGORITHMS */public class Main { public static void main(String[] args) { int[] X = new int[7]; int m; int n=6; int i; int j; X[1]=6; X[2]=2; X[3]=1; X[4]=5; X[5]=4; X[6]=3; /*Print the initial X[i] (1<=i<=n)*/ System.out.println("The initial X[i] (1<=i<=n) is:"); for(int k=1; k<=n; k++){ System.out.println("X["+k+"]="+X[k]); } System.out.println(); /*Print the initial permutation*/ System.out.println("The initial permutation is:"); System.out.print("| "); for(int k=1; k<=n; k++){ System.out.print((char)(k+96)); System.out.print(' '); } System.out.print("|"); System.out.println(); System.out.print("| "); for(int k=1; k<=n; k++){ System.out.print((char)(X[k]+96)); System.out.print(' '); } System.out.print("|"); System.out.println(); System.out.println(); m=n; /*J1*/ for(int k=1; k<=n; k++){ X[k] = -X[k]; } /*Kernel of the Algorithm*/ do{ j = m; /*J2*/ do{ /*J3*/ i = X[j]; if(i > 0){ j = i; } }while (i > 0); X[j] = X[-i]; /*J4*/ X[-i] = m; m--; /*J5*/ }while (m > 0); /*Print the final X[i] (1<=i<=n) after inversed*/ System.out.println("The final X[i] (1<=i<=n) after inversed is:"); for(int k=1; k<=n; k++){ System.out.println("X["+k+"]="+X[k]); } System.out.println(); /*Print the final permutation after inversed*/ System.out.println("The final permutation after inversed is:"); System.out.print("| "); for(int k=1; k<=n; k++){ System.out.print((char)(k+96)); System.out.print(' '); } System.out.print("|"); System.out.println(); System.out.print("| "); for(int k=1; k<=n; k++){ System.out.print((char)(X[k]+96)); System.out.print(' '); } System.out.print("|"); System.out.println(); }}
Outputs
The initial X[i] (1<=i<=n) is:X[1]=6X[2]=2X[3]=1X[4]=5X[5]=4X[6]=3The initial permutation is:| a b c d e f || f b a e d c |The final X[i] (1<=i<=n) after inversed is:X[1]=3X[2]=2X[3]=6X[4]=5X[5]=4X[6]=1The final permutation after inversed is:| a b c d e f || c b f e d a |
Reference
<< The Art of Computer Programming: Fundamental Algorithms >> VOLUME 1, DONALD E. KNUTH
0 0
- Algorithm: Inverse in place-2
- Algorithm: Inverse in place
- An in-place algorithm for String Transformation
- CareerCup An in-place algorithm for String Transformation
- in-place
- A Simple In-Place Algorithm for In-Shuffle 一种简单的原地洗牌算法
- Execute in place
- in-place merge
- in-place edit
- XIP - eXecute In Place
- In-place Counting Sort
- Parallel In-Place Merge
- jquery-in-place-editor
- RANDOMIZE IN PLACE
- Raspberry Pi in place
- in-place数据交换
- 【OpenCV】in-place操作
- in-place操作
- Ubuntu 安装 lnmp
- [leetcode] Reverse Bits
- java学习——异常处理
- VirtualBox: Full-Screen-Display and Share-Folder problem
- IOS开发学习27 ObjectC 自带json解析方法的使用
- Algorithm: Inverse in place-2
- JAVA编写网络爬虫笔记(第二部分:httpClient下载页面)
- 正确使用Android性能分析工具——TraceView
- Algorithm: Inverse in place
- 互斥量Mutex 与 互斥量CS
- const与define
- Javascript原型链和原型的一个误区
- memorization(overlapping subproblems) demo
- 每日一题29:最小生成树