排序使用简单的插入排序实现:
void one_sort(int *sqList,int val,int len)
{
int pos=len;
int temp=val;
while(val0)
{
sqList[pos]=sqList[pos-1];
pos--;
}
sqList[pos]=temp;
}
//直接插入排序实现
void straisort(struct Arr * pArr)
{
for(int i=1;icnt;i++)
{
one_sort(pArr->pBase,pArr->pBase[i],i);//调用单步排序
}
}
直接插入排序通用算法:
void one_sort(int *sqList,int val,int len)
{
int pos=len;
int temp=val;
while(val0)
{
sqList[pos]=sqList[pos-1];
pos--;
}
sqList[pos]=temp;
}
//直接插入排序实现
void straisort(int *arr,int len)
{
int i;
for(i=1;i
/*
线性结构数组的实现
*/
#include
#include //包含了malloc函数
#include //包含了exit函数
//首先定义描述数组信息的结构体类型
struct Arr
{
int * pBase;//存放数组首地址的指针变量
int len;//数组长度
int cnt;//数组中元素的个数
};
//定义数组的基本操作的函数声明
void init_arr(struct Arr * pArr,int length);//数组初始化
bool append_arr(struct Arr * pArr,int val);//追加元素
bool insert_arr(struct Arr * pArr,int index ,int val);//插入元素
bool delete_arr(struct Arr * pArr, int pos, int * pVal);//删除元素
int get(struct Arr *pArr,int index); //得到元素
bool is_empty(struct Arr * pArr);//判断是否为空
bool is_full(struct Arr * pArr);//判断是否已满
void show_arr(struct Arr * pArr);//遍历数组
void inversion_arr(struct Arr * pArr);//数组倒置
void one_sort(int *sqList,int val,int len);//单步排序声明
void straisort(struct Arr * pArr);//直接插入排序声明
int main(void)
{
struct Arr arr;
init_arr(&arr,6);//初始化函数测试
//show_arr(&arr);
append_arr(&arr,3);
append_arr(&arr,2);
append_arr(&arr,9);
insert_arr(&arr,2,7);
show_arr(&arr);
return 0;
}
//初始化数组的函数实现 pArr是结构体变量arr的指针
void init_arr(struct Arr * pArr,int length)
{
pArr->pBase=(int *)malloc(sizeof(int)*length);//malloc()函数头文件声明
if(NULL==pArr->pBase)
{
printf("动态内存分配失败!\n");
exit(-1);//要在头文件声明
}
else
{
pArr->len=length;
pArr->cnt=0;
}
}
//遍历数组函数实现
void show_arr(struct Arr * pArr)
{
if(is_empty(pArr))
{
printf("数组为空\n");
}
else
{
for(int i=0;icnt;i++)
{
printf("%d",pArr->pBase[i]);
}
}
}
//判断数组是否为空
bool is_empty(struct Arr * pArr)
{
if(pArr->cnt==0)
return true;
else
return false;
}
//数组追加元素
bool append_arr(struct Arr * pArr,int val)
{
if(pArr->cnt < pArr->len)
{
pArr->pBase[pArr->cnt]=val;
(pArr->cnt)++;
return true;
}
else
printf("数组已满\n");
return false;
}
//插入元素
bool insert_arr(struct Arr * pArr,int index ,int val)
{
if(pArr->cntlen&&index<=pArr->cnt)
{
for(int i=pArr->cnt-1;i>=index-1;i--)
{
pArr->pBase[i+1]=pArr->pBase[i];
}
pArr->pBase[index-1]=val;
(pArr->cnt)++;
return true;
}
else
{
printf("插入失败\n");
return false;
}
}
//单步直接插入排序实现
void one_sort(int *sqList,int val,int len)
{
int pos=len;
int temp=val;
while(val0)
{
sqList[pos]=sqList[pos-1];
pos--;
}
sqList[pos]=temp;
}
//直接插入排序实现
void straisort(struct Arr * pArr)
{
for(int i=1;icnt;i++)
{
one_sort(pArr->pBase,pArr->pBase[i],i);//调用单步排序
}
}
//数组倒置
void inversion_arr(struct Arr * pArr )
{
int i = 0;
int j = pArr->cnt-1;//首尾下标的呼应关系
int t;
while (i < j)
{
t = pArr->pBase[i];
pArr->pBase[i] = pArr->pBase[j];
pArr->pBase[j] = t;
i++;
j--;
}
return;
}
//删除元素
bool delete_arr(struct Arr * pArr, int pos, int * pVal)
{
int i;
if ( is_empty(pArr) )
return false;
if (pos<1 || pos>pArr->cnt)
return false;
*pVal = pArr->pBase[pos-1];
for (i=pos; icnt; i++)
{
pArr->pBase[i-1] = pArr->pBase[i];
}
pArr->cnt--;
return true;
}
//判断是否已满
bool is_full(struct Arr * pArr)
{
if (pArr->cnt == pArr->len)
return true;
else
return false;
}
//查找元素
int get(struct Arr *pArr,int index)
{
for(int i=0;icnt;i++)
{
if(index==i)
{
return pArr->pBase[i];
}
}
}
..................................................................................................................................................................................................
其他收集的小代码:
/* 1
1 1
1 2 1
1 3 3 1 一维数组二维数组是一个好算法 切记
1 4 6 4 1 打印杨辉三角算法
二维数组算法 记住这一题
*/
package day3;
public class Yanghuisanjiao {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
final int MAX = 8;//经常出现的常数用名称标识
int mat[][] = new int[MAX][];
int i = 0, j, n;
n = MAX;
for (i = 0; i < n; i++) {
mat[i] = new int[i + 1];//对每个小数组实例化 ,规律:实例化个数 是下标+1
mat[i][0] = 1;
mat[i][i] = 1;
for (j = 1; j < i; j++)
mat[i][j] = mat[i - 1][j - 1] + mat[i - 1][j];//好算法 上面两个数加起来是下面一个数 怎么表示的 学习
}
for (i = 0; i < n; i++) {
for (j = n - i; j > 0; j--)
System.out.print(" ");
for (j = 0; j <= i; j++)
System.out.print(mat[i][j] + " ");
System.out.println();
}
}
}