C#实现求一组整数数列中最长升序列

     有一组整数,例如:5, 1, 9, 1, 3, 3, 5, 9, 10, 12, 4, 2, 7, 8, 5, 9 , 例如第一位5,5<1,所以5的升序就是1,第二位 1,一位1<9,9后面是1,所以升序为2,以此类推。

C#实现的代码如下:

 1 //定义整形数组变量
 2             int[] arr = new int[] { 5, 1, 9, 1, 3, 3, 5, 9, 10, 12, 4, 2, 7, 8, 5, 9 };
 3             //定义一个数组的变量,用于存放数组的下标,已经升序位数
 4             int[] len = new int[arr.Length];
 5             len[0] = 1;
 6             //双重遍历
 7             for (int i = 0; i < arr.Length; i++)
 8             {
 9                 int max = 1;
10                 //拿后一位和前以为比较,如果和一位比前一位打,则max加1,否则的话,结束本次循环
11                 for (int j = i + 1; j < arr.Length - 1; j++)
12                 {
13                     if (arr[j - 1] < arr[j])
14                     {
15                         max++;
16                     }
17                     else
18                     {
19                         break;
20                     }
21                 }
22                 //i代表的是arr的小标,max是代表升序位数
23                 len[i] = max;
24             }

最后得到的len[i]数组,就存放了arr数组的下标和,每一位的升序位数。

posted @ 2013-08-06 13:30  飘落的枫叶  阅读(244)  评论(0)    收藏  举报