当前位置:文档之家› 常用算法及数据结构

常用算法及数据结构


/*内循环控制每一趟两两比较的次数*/
{
if (a[j] > a[j + 1])
{
temp = a[j];
/*交换两个记录*/
a[j] = a[j + 1];
a[j + 1] = temp;
}}}

❖栈是一种数据结构,它是一种操作受 限的数组,因为它只允许用户从数组 的一头进行操作,其操作原则是先进 后出,或者说是后进先出。
栈顶
C
Pop()
B
A
栈底
用一维数组模拟栈操作
❖用一维数组模拟栈的操作,完成将用 户输入的数组按相反的顺序显示出来。
string Test; int MaxLength = 50; char[] str = new char[MaxLength]; int i; int CurrentPos = 0; Console.WriteLine("输入要测试的字符串:"); Test = Console.ReadLine(); for (i = 0; i < Test.Length; i++) {
直接选择排序
❖基本思想
直接选择排序的基本思想是:第一趟从所有的n个 记录中选取最小的记录放在第一位,第二趟从n-1 个记录中选取最小的记录放到第二位。以此类推, 经过n-1趟排序后,整个序列就成为有序序列。

初始记录的关键字: 7 4 -2 19 13 6 第一趟排序:-2 4 7 19 13 6 第二趟排序: -2 4 7 19 13 6 第三趟排序: -2 4 6 19 13 7 第四趟排序: -2 4 6 7 13 19 第五趟排序: -2 4 6 7 13 19 第六趟排序: -2 4 6 7 13 19
if (CurrentPos >= MaxLength) break;
图 冒泡排序过程
算法实现
int i,j,temp;
int[] a = new int[] { 7, 4, -2, 19, 13, 6 };
for (i = 0; i <a.Length-1; i++)
/*外循环控制排序的趟数*/
{
for (j = 0; j < a.Length - i-1; j++)
图 直接选择排序的过程
算法实现
int i, j, k,temp; int[] a = new int[] {7, 4, -2, 19, 13, 6 };
for (i = 0; i < a.Length - 1; i++) { k = i; for (j = i + 1; j < a.Length; j++) if (a[j] < a[k]) k = j; if (i != k) { temp = a[k]; a[k] = a[i]; a[i] = temp ; } }
冒泡排序
❖基本思想
冒泡排序(Bubble Sort)是一种简单的交换排序 方法。它的基本思想是对所有相邻记录进行比较, 如果是逆序,则将其交换,最终达到有序。

初始关键字序列: 23 38 22 45 23 67 31 15 41 第一趟排序后: 23 22 38 23 45 31 15 41 67 第二趟排序后: 22 23 23 38 31 15 41 45 67 第三趟排序后: 22 23 23 31 15 38 41 45 67 第四趟排序后: 22 23 23 15 31 38 41 45 67 第五趟排序后: 22 23 15 23 31 38 41 45 67 第六趟排序后: 22 15 23 23 31 38 41 45 67 第七趟排序后: 15 22 23 23 31 38 41 45 67
❖栈这种数据结构的操作主要有两个, 一个操作叫入栈(push)操作,它的 作用是把当前数据保存到栈顶,另一 个操作是出栈(pop)操作,它的作用 是取出栈顶的数据。

❖进栈或入栈 (Push)
Push(B) Push(A)
Push(C)
C
B
栈顶
A
栈底

❖弹出或出栈 (Pop)
Pop()
Pop()
常用算法及 Βιβλιοθήκη 据结构主要内容❖查找 ❖排序 ❖栈
查找
❖查找是指在数据元素集合中查找满足某种 条件的数据元素的过程。例如在学生成绩 表中查找某一学生的成绩;在字典中查找 某个字等等。
❖查找是计算机应用中最常用的操作之一, 也是许多程序中最耗时间的一部分。因而, 查找方法的优劣对系统的运行效率影响极 大。
if (x[i] == k) { p = i; break; } if (p != -1)
Console.WriteLine ("{0} in position {1}", k, p); else Console .WriteLine ("{0} no found!", k);
排序
❖排序是将一组任意序列的数据元素 (记录),按由大到小的顺序(降序) 排列或按由小到大的顺序(升序)排 列。这些数据元素(记录)可以是数 值型,也可以为字符型。若为数值型, 则按数值大小排列;若为字符型,则 按其ASCII码的顺序排列。
顺序查找
❖基本思想
▪ 从查找表的一端开始,逐个将记录的关 键字值和给定值进行比较,如果某个记 录的关键字值和给定值相等,则称查找 成功;否则,说明查找表中不存在关键 字值为给定值的记录,则称查找失败。
顺序查找
❖例:利用随机函数产生10个100以内 的整数存放在数组x中,然后读入一个 待查找的数k。若k存在,显示它在数 组中的位置(下标);否则显示没有 找到。
算法实现
int[] x = new int[10]; int k,p=-1,i; Random ran = new Random(); for (i = 0; i <x.Length ; i++) {
x[i] = (int)(ran.Next())% 100; Console .Write("{0},", x[i]); } Console.WriteLine(); Console .WriteLine ("please enter a number for search:"); k=int.Parse (Console .ReadLine ()); for (i = 0; i <x.Length ; i++)
相关主题