使用vim进行文本编辑、保存并退出
任务描述
1)读取文件“sort.txt”,文件第一行是十个数字“65,43,79,21,298,12,3,54,44,1”;
2)对读取的“sort.txt”中的十个数字使用冒泡排序进行排序
3)将排序结果写到“result.txt”目录下。
用ubantu完成
#include <stdio.h>
#include<stdlib.h>
#define swap(a, b) \
{ \
a ^= b; \
b ^= a; \
a ^= b; \
}
void bubbleSort(int *array, int n)
{
int i, j, flag;
for (i = 0; i < n - 1; i++)
{
flag = 0;
for (j = n - 1; j > i; j--)
{
if (array[j - 1] > array[j])
{
swap(array[j - 1], array[j]);
flag = 1;
}
}
if (flag == 0)
break;
}
}
int main()
{
FILE *from_fd,*to_fd;
char *filename = "./sort.txt", *filename1="./result.txt";
from_fd = fopen(filename, "r+");
to_fd = fopen(filename1, "w+");
if (from_fd == NULL)
{
printf("open source file failed!\n");
return -1;
}
if (to_fd == NULL)
{
printf("open source file failed!\n");
return -1;
}
int Array[10];
int i;
for(i=0;i<10;i++){
fscanf(from_fd,"%d",&Array[i]);
}
printf("\n");
bubbleSort(Array,sizeof(Array)/sizeof(int));
for(i=0;i<10;i++){
fprintf(to_fd,"%d ",Array[i]);
}
close(to_fd);
close(from_fd);
}
vim 能用冒泡排序?
C 不太熟悉,用python 写出来了,可以看一下
#! /usr/bin/env python3
# _*_ coding: utf8 _*_
def bubbleSort(nums):
for i in range(len(nums) - 1):
for j in range(len(nums) - i - 1):
if nums[j] > nums[j + 1]:
nums[j], nums[j + 1] = nums[j + 1], nums[j]
return nums
def bubbleSort_file(red_file, write_file):
# 读取文件
with open(red_file, 'r') as f1:
data = [int(i) for i in f1.read().split(',')]
# 进行冒泡排序
str_data = [str(i) for i in bubbleSort(data)]
# 写入文件
with open(write_file, 'w') as f2:
f2.write(','.join(str_data))
if __name__ == '__main__':
bubbleSort_file('sort.txt', 'result.txt')
1、创建sort.txt文件
#ubuntu@vanfonuat:/scritps$ vim sort.txt/scritps$ cat px.sh
插入如下内容:
65,43,79,21,298,12,3,54,44,1
2、编写脚本px.sh
ubuntu@vanfonuat:
#!/bin/bash
#author:Bone
curdir=`cd -P $(dirname $0); pwd`
cd $curdir
cp sort.txt bak.txt
sed -i 's/,/ /g' bak.txt
bstr=`cat bak.txt`
echo "$bstr"
score=($bstr)
#外层为轮
for ((i=1;i<${#score[@]};i++));do
#内层为次
for ((j=0;j<${#score[@]}-i;j++));do
#两两交换
if [ ${score[$j]} -gt ${score[((j+1))]} ] ;then #j为下标 第二个就是j+1
tmp=${score[((j+1))]} #这边就是赋值
score[((j+1))]=${score[$j]}
score[$j]=$tmp
fi
done
done
echo ${score[@]}
3、Ubuntu下执行测试