课程名称:C语言系统化精讲 重塑编程思想 打造坚实的开发基础
课程章节:第六章 玩转数组
授课老师:bennyhuo
二维数组
数组就是嵌套的数组,其遍历和赋值和一维数组大同小异
int vehicle[5][2] = {
{0,5},
[1][1] = {1,6},
{2,7},
{3,8},
{4,9}
};
// int vehicle[5][2] ={0,5,1,6,2,7,3,8,4,9} 一行也是等价的。
//循环用二维for 遍历
for (int i = = 0 ; i< 5; i++)
for (int j = 0 ; j< 2; j++){
//statement
}
而如果对多维数组的某一行或某一列做操作,欲返回一个数组,可以用参数 resutl
返回
void SumIntArray(int rows , int columns, int array[][columns] ,int result[]){
//statement
}
//其中 int array[][columns] 利用了VLA 的特性,即利用其列确定其长度。
打乱数组的位置
shuffle
函数,其实就是洗牌函数。从后往前交换,每次随机选取一个元素 与当前元素交换。
#include <stdlib.h>
#include <time.h>
void SwapElement(int array[] , int first ,int second){
int temp = array[first]
array[first] = array[second]
array[second] = temp;
}
void Shuffle(int array[] , int length){
srand(time());
for(int i = length - 1; i > 0 ; --i){
int random_number == rand()% i;
SwapElement(array, i , random_number);
}
}
可以看看这个链接
数组快排
快排就是分治法的典型排序算法:
- 使用swap 可以在原地将数组 交换为前面为小于某个数目,后面大于某个数目。
int Partition ( int array[] ,int low ,int high ){
}
int QuickSort (int array[] ,int low ,int high){
if(low >= high) return;
int partition = Partion(array, low, high);
QuickSort(array, low ,partion-1);
QuickSort(array, partion+1, high);
}
课程收获
- 复习了快排和洗牌算法
- 熟悉了快排 中原地 partion (双指针)的写法