您的位置:首页 > 理论基础 > 数据结构算法

C语言-数据结构(一)

2015-07-15 11:23 501 查看
1.动态创建多维数组

int ** createArray(int rows, int cols) {
int **x, i;
x = (int **)malloc(rows * sizeof(*x));
for (i = 0; i < rows; i++) {
x[i] = (int *)malloc(cols * sizeof(**x))
}
return x;
}


1.线性表

  特点: 1)存在唯一的一个被称为第一个的数据元素 2)存在唯一的一个被称为最后一个的数据元素 3)除第一个外, 集合中的每个数据元素均只有一个前驱 4)出最后一个外, 集合中的每个数据元素只有一个后继

  表示方法: 1)顺序表示 2)链式表示

1.冒泡排序

void sort(int list[], int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = i; j < n; j++) {
if (list[i] < list[j]) {
temp = list[i];
list[i] = list[j];
list[j] = temp;
}
}
}
}


2.二分查找

int binsearch(int *list, int search, int num) {
int middle;
int left = 0;
int right = num - 1;

while (left <= right) {
middle = (left + right) / 2;
if (list[middle] > search) {
right = middle - 1;
} else if (list[middle] == search) {
return middle;
} else {
left = middle + 1;
}
}

return -1;
}


递归版本

int binsearch(int *list, int search, int left, int right) {
int middle;
if (left <= right) {
middle = (left + right) / 2;
if (list[middle] > search) {
return binsearch(list, search, left, middle - 1);
} else if (list[middle] == search) {
return middle;
} else {
return binsearch(list, search, middle + 1, right);
}
}
return -1;
}


3.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: