c语言排序问题,求各位帮我看一下

该程序是:输入8个数,将这8个数从小到大排序。我用了选择排序。
为什么排序结果会溢出?又要怎么改?

#include 

int main()
{
    int a[8];
    int i, j, t;
    int h,m;
    printf("input 8 number:\n");
    for (i = 0; i < 8; i++)
        scanf_s("%d", &a[i]);
    printf("\n");
    for (j = 8; j >= 0; j--)
    {
        for (i = 0; i < j + 1; i++)
        {
            m = a[j];
            h = j;
            if (m < a[i])
            {
                m = a[i];
                h = i;
                t = a[j], a[j] = a[i], a[i] = t;
            }
        }
    }
    printf("顺序是:\n");
    for(i=0;i<8;i++)
    printf("%d   ", a[i]);
    return 0;
 
}


输入的是
5 3 7 4 9 8 2 1
运行结果是
-858993460 1 2 3 4 5 7 8

C++十种排序方法(快速排序、冒泡排序等等)_超威蓝猫的哥哥的博客-CSDN博客_c++排序方法有哪几种 C++十种排序方法(快速排序、冒泡排序等等)一、冒泡排序1、概念及思路:冒泡排序顾名思义就是大的数沉下去,小的数浮上来,就跟气泡在水底浮上来一样;基本的思路很简单,就是相邻的两个数相比较,如果前面那个数比后面那个数大,则换位置,否则不需要换。以此循环下去(这里指的是从小到大排序,当然也可以从大到小)2、代码演示:#include<iostream>using namespace std;int main() {int i;int arr[10] = { 1,5,2,3,6 https://blog.csdn.net/weixin_41545534/article/details/115567889?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166643216416800182740432%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=166643216416800182740432&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~top_positive~default-1-115567889-null-null.nonecase&utm_term=c%2B%2B%E6%8E%92%E5%BA%8F&spm=1018.2226.3001.4450

for (j = 7; 8越界了